我正在尝试为每个唯一的machine_id计算行之间的日期时间差。我已经对数据框进行了分组并尝试了
newdf = newdf.copy()
newdf['diffs'] = float('nan')
newdf = newdf.copy()
for index in newdf.index.levels[0]:
newdf.diffs[index] = newdf.event_datetime[index].diff
数据集看起来像
答案 0 :(得分:1)
在进行groupby操作后您是否尝试过diff
?像这样:
newdf.groupby('machine_id').event_date.diff()
答案 1 :(得分:1)
我试图创建多索引数据框,使用diff()
函数应该可以正常工作。
使用ATL建议的newdf.groupby('machine_id').event_date.diff()
应该可以正常工作。
o
# hierarchical indices and columns
index = pd.MultiIndex.from_product([[598, 615, 721], [43, 43, 45]],
names=['machine_id', 'prod_category_id'])
# mock some data
data = ['2017-03-20 12:00:00','2017-03-29 01:00:00','2017-04-29 01:00:00',
'2017-03-30 02:00:00', '2017-04-29 02:00:00','2017-05-29 12:00:00',
'2017-10-30 02:00:00', '2017-11-29 02:00:00', '2017-11-29 04:00:00']
# create the DataFrame
newdf = pd.DataFrame(data, index=index)
newdf.columns = ['event_date']
newdf['event_date'] = pd.to_datetime(newdf['event_date'])
newdf.groupby(level=0)['event_date'].diff()