【问题标题】:implement Group by partly on a dataframe在数据框上部分实现 Group by
【发布时间】:2021-12-08 22:50:27
【问题描述】:

假设我有以下数据框:

Location Type Take Num
One A 2016-01-01 1
One B 2016-01-01 2
One C 2016-01-01 3
One A 2016-01-01 4
One B 2016-01-01 5
One C 2016-01-01 6

我想按位置分组并键入 Num 值并求和。我想保持 Take col 不变,如下所示:

Location Type Take Num
One A 2016-01-01 5
One B 2016-01-01 7
One C 2016-01-01 9

我尝试了以下方法:

df=df.groupby(['Location','Type'], as_index = False).agg({'Num':'sum','Take':'first'})

它不工作并返回以下错误: TypeError: 必须是 str,而不是 int

提前感谢您的任何提示!

【问题讨论】:

  • 对我来说很好
  • 您可能应该检查数据框中包含的每个元素的类型。这很可能是来自“Num”或“Take”IMO 中不一致的类型的错误,但由于我们没有您使用的确切数据,因此无法真正检查它
  • 我刚刚检查了我拥有的数据的 info():所有 cols 似乎都被定义为 Object

标签: python pandas group-by


【解决方案1】:

试试这个 df=df.groupby(['Location','Type', 'Take' ], as_index = False).agg({'Num':'sum'})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 2014-04-08
    • 2020-02-08
    • 1970-01-01
    • 2017-06-14
    • 2016-12-31
    • 1970-01-01
    相关资源
    最近更新 更多