【问题标题】:groupby based on one column and get the sum values in another columngroupby 基于一列并获取另一列中的总和值
【发布时间】: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

只是把所有的时间放在一起,并没有总结出来。

【问题讨论】:

    标签: pandas dataframe group-by sum


    【解决方案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()
    

    【讨论】:

      猜你喜欢
      • 2020-12-19
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      • 2019-10-15
      • 2019-02-24
      相关资源
      最近更新 更多