Pandas数据框(“df”)如下所示:
name id time
1095 One 1 12:03:37.230812
1096 Two 2 10:56:29.314745
1097 Three 3 10:58:18.897624
1098 Three 3 09:45:38.755116
1099 Two 2 09:02:59.472508
1100 One 1 12:28:38.341024
在此,我做了一个
的操作df = df.groupby(by=['id'])[['time']].transform(sum).sort('time', ascending=False)
在结果 df 上,我想迭代并获得响应作为名称和总时间。我怎样才能从最后一个df(来自groupby / transform响应)获得这个?所以结果应该是这样的:
name time
One 24:03:37.230812
Two 19:56:29.314745
Three 19:58:18.897624
答案 0 :(得分:1)
我认为您首先需要转换列time
to_timedelta
。
然后name
列id
或sum
并汇总df.time = pd.to_timedelta(df.time)
df = df.groupby('name', as_index=False)['time'].sum().sort_values('time', ascending=False)
print (df)
name time
0 One 1 days 00:32:15.571836
1 Three 0 days 20:43:57.652740
2 Two 0 days 19:59:28.787253
:
df = df.groupby('id', as_index=False)['time'].sum().sort_values('time', ascending=False)
print (df)
id time
0 1 1 days 00:32:15.571836
2 3 0 days 20:43:57.652740
1 2 0 days 19:59:28.787253
seconds
最后可以通过groupby
将timedeltas转换为df.time = df.time.dt.total_seconds()
print (df)
id time
0 1 88335.571836
2 3 74637.652740
1 2 71968.787253
,另一个会话为total_seconds
:
if dealer_value3 == "A"
if dealer_hand1 < 11
return dealer_value3 = 11
else
return dealer_value3 = 1
end
end