groupby 基于一列并获取另一列中的总和值
Posted
技术标签:
【中文标题】groupby 基于一列并获取另一列中的总和值【英文标题】:groupby based on one column and get the sum values in another column 【发布时间】:2021-01-18 02:56:54 【问题描述】:我有一个这样的数据框
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
只是把所有的时间放在一起,并没有总结出来。
【问题讨论】:
【参考方案1】:travel time
列中有字符串,请尝试使用Series.astype
:
df['travel time'] = df['travel time'].astype(float)
如果由于某些非数值而失败,请使用 to_numeric
和 errors='coerce'
:
df['travel time'] = pd.to_numeric(df['travel time'], errors='coerce')
最后一个聚合:
df1 = df.groupby('mode', as_index=False)['travel time'].sum()
【讨论】:
以上是关于groupby 基于一列并获取另一列中的总和值的主要内容,如果未能解决你的问题,请参考以下文章