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_numericerrors='coerce'

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

最后一个聚合:

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

【讨论】:

以上是关于groupby 基于一列并获取另一列中的总和值的主要内容,如果未能解决你的问题,请参考以下文章

Groupby 一列并根据 R 中的字符串向量重新排列另一列字符串

比较两个列并从同一个表中的另一列获取数据

Groupby 一列并找到它的总和和计数

过滤表列并查看另一列中的数据[关闭]

Groupby 一列并计算另一列的条件?

Apache Spark SQL数据集groupBy具有max函数和另一列中的不同值