我想比较S.No.不同的行,如果它是相同的,那么我想计算日期时间差异和打印细节。(如果日期时间差异不可能那么只有日期差异也可以。)
输入
S.No. Datetime Details
1 2010/6/7 19:01 asd
1 2010/6/8 4:00 dfg
2 2010/6/9 0:00 dfg
2 2010/6/10 0:00 gfd
2 2010/6/11 0:00 gfd
3 2010/6/12 0:00 gfd
3 2010/6/13 0:00 abc
4 2010/6/14 0:00 abc
4 2010/6/15 0:00 def
预期输出
1 0.3 asd dfg
2 1 dfg gfd
2 1 gfd gfd
3 1 gfd abc
4 1 abc def
答案 0 :(得分:0)
使用groupby(http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.groupby.html)
假设您的输入保存在pandas Dataframe中(或等效地将其保存到csv中并使用pandas.read_csv读取它)。 现在,您可以使用以下内容循环具有相同S.No值的组:
output = {}
for key, group in df.groupby('S.No.'):
# print key
# print group
output[key] = {}
output[key]['Details'] = group['Details'].values.tolist()
output[key]['Date Time Diff'] = pd.to_datetime(group['Datetime']).diff().iloc[-1]
以上
的输出1 {'Date Time Diff': Timedelta('0 days 08:59:00'), 'Details': ['asd', 'dfg']}
2 {'Date Time Diff': Timedelta('1 days 00:00:00'), 'Details': ['dfg', 'gfd', 'gfd']}
3 {'Date Time Diff': Timedelta('1 days 00:00:00'), 'Details': ['gfd', 'abc']}
4 {'Date Time Diff': Timedelta('1 days 00:00:00'), 'Details': ['abc', 'def']}