pandas:按总和检索组后的值

时间:2017-04-09 12:57:45

标签: python pandas

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

1 个答案:

答案 0 :(得分:1)

我认为您首先需要转换列time to_timedelta

然后nameidsum并汇总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