【发布时间】:2020-07-08 02:01:51
【问题描述】:
这是我的数据框
data = [[1,'A','a','2020-01-01'],
[1,'A','b','2020-01-02'],
[1,'B','a','2020-01-03'],
[2,'A','a','2020-01-04'],
[2,'A','b','2020-01-05'],
[2,'A','b','2020-01-06']]
df_1 = pd.DataFrame(data = data,columns = ['id','main','sub_steps','date'])
df_1['date'] = pd.to_datetime(df_1['date'])
我想按id 列分组并计算Main 或sub_steps 发生变化时的时间差。
想要的结果
id main sub_steps date sub_steps date_main_diff date_subStep_diff
0 1 A a 2020-01-01 [a, b] 0 days 0 days
1 1 A b 2020-01-02 [a, b] 1 days 0 days
2 1 B a 2020-01-03 [a] 0 days 0 days
3 2 A a 2020-01-04 [a, b, b] 0 days 0 days
4 2 A b 2020-01-05 [a, b, b] 1 days 0 days
5 2 A b 2020-01-06 [a, b, b] 2 days 1 days
我只能想办法
(df_1.merge(df_1.groupby(['id','Main'])
.agg({'sub_steps':list,
'date': df_1.date - df_1.date.shift(1) })
,on=['id', 'Main']))
给出错误TypeError: 'NaTType' object is not callable
日期差异列的唯一问题在于我得到了我想要的。
【问题讨论】:
标签: python python-3.x pandas pandas-groupby