【问题标题】:Multplying groupby elements for each group in survey为调查中的每个组乘以元素
【发布时间】:2020-07-24 07:54:06
【问题描述】:

我正在处理 Stack Overflow 2019 调查数据。 here is Survey 2019 data.

该数据中有很多列。

我要进行这个计算--->“Age1stCode 的总和”/“相关年龄的人数”。

Age1stCode 是调查中的一列,说明了编码的第一年。年龄是一列“年龄”。

我根据“年龄”创建了一个群组。

我只想将每个相反的数字相乘,然后将它们相加。例如,对于 11 岁 = (6x3)+(7x3)+ (9x2)+.......(8x1)。我想为每个年龄段的人做这件事。所以最后,我想实现一个输出,就像我附加的文件“Age 11.0 ----> 326(它只是随机的),Age 12.0 ---> 468)

我的目标是计算这个 ---> 每个年龄段的 Age1stCode 总和。

here is the output that I want to work with. Attached File.

【问题讨论】:

  • 请查看stackoverflow.com/help/minimal-reproducible-example。到目前为止,您应该包含您的代码,并且回答问题所需的所有数据都应该是文本,而不是图像或外部资源的链接。
  • 随便做吧:df.groupby('Age').Age1stCode.sum().
  • @QuangHoang 出现一个错误,提示“您只能将 str 转换为 str”,因此我将“Age”和“Age1stCod”值都转换为 str,然后修复了错误。但输出不像我预期的那样。 10 岁时写成 444(应该是 3),11 岁时写成 69771078911656(应该是 91)
  • 为什么要将数值转换为字符串?

标签: pandas numpy matrix survey


【解决方案1】:
df_grouped = df.groupby('Age').agg({'Age1stCode': 'sum'}).reset_index()
new_col = df_grouped['Age1stCode'] / df_grouped['Age']

【讨论】:

  • 非常感谢!我修改了你的代码,它给了我想要的结果。 df_grouped = df.groupby('Age').agg({'Age1stCode': 'sum'}) new_col = df_grouped['Age1stCode']
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-15
  • 1970-01-01
  • 2019-03-28
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多