【问题标题】:How can I groupby and aggregate pandas dataframe with many columns如何分组和聚合具有多列的熊猫数据框
【发布时间】:2020-06-21 18:00:19
【问题描述】:

我正在研究一个有 168 列的 pandas 数据框。前三列包含国家名称、纬度和经度。其余列包含数字数据。每行代表一个国家,但对于某些国家/地区,有多行。我需要通过求和来聚合这些行。我可以使用以下代码聚合前三列:

df = df.groupby('Country', as_index=False).agg({'Lat':'first','Long':'first'})

但是,如果不明确写入所有列名,我无法找到一种方法来在该代码中包含剩余的 165 列。另外,列名代表日期,命名为5/27/205/28/205/29/20等。所以我需要保留列名。

我该怎么做?谢谢。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    也许你可以从列名生成字典:

    df = df.groupby('Country', as_index=False).agg({c: 'first' for c in df.columns})
    

    【讨论】:

    • 我按照@Jonas 的建议生成了一个字典:df1 = df.groupby(['Country/Region'], as_index=False).agg({c: np.sum for c in df.columns[4:]}) 但是它不包括 LatLong 列。我尝试以不同的方式将'Lat':'first', 'Long':'first' 添加到上述代码中,但它给出了语法错误。作为一种解决方法,我生成了第二个带有“国家”、“纬度”和“长”的数据框:列 df2 = df.groupby(['Country/Region'], as_index=False).agg({'Lat':'first','Long':'first'}) 然后我合并了 df1df2df3 = df1.merge(df2, how='left', left_on='Country', right_on='Country') -谢谢
    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2023-04-01
    • 1970-01-01
    • 2016-06-24
    相关资源
    最近更新 更多