首页 > 解决方案 > groupby 基于一列并获取另一列中的总和值

问题描述

我有一个这样的数据框

mode    travel time 
transit_walk    284.0   
transit_walk    284.0   
pt              270.0   
transit_walk    346.0   
walk            455.0   

我想按“模式”分组并获得所有旅行时间的总和。所以我想要的结果看起来像:

mode           total travel time
transit_ walk   1200000000
pt               30000000
walk             88888888   

我已经编写了代码,例如

df.groupby('mode')['travel time'].sum()

但是,我的结果如下:

mode
pt              270.01488.01518.01788.01300.01589.01021.01684....
transit_walk    284.0284.0346.0142.0142.01882.0154.0154.0336.0...
walk            455.018.0281.0554.0256.0256.0244.0244.0244.045...
Name: travel time, dtype: object

这只是将所有时间并排放置,并没有总结它们。

标签: pandasdataframegroup-bysum

解决方案


column 中有字符串travel time,所以尝试使用Series.astype

df['travel time'] = df['travel time'].astype(float)

如果由于某些非数值而失败,请使用to_numericwith errors='coerce'

df['travel time'] = pd.to_numeric(df['travel time'], errors='coerce')

最后一个聚合:

df1 = df.groupby('mode', as_index=False)['travel time'].sum()

推荐阅读