python - 重命名列的条目,然后在 pandas 中重命名 groupby

标签 python pandas dataframe pandas-groupby

假设我有两个名为“country_to_country”和“country_area_mapping”的数据框,如下所示。

>>> country_to_country
  From  To  Volume
0   c1  c4      10
1   c2  c5      20
2   c3  c6      30

>>> country_area_mapping
  Country  Area
0   c1     a1
1   c2     a2  
2   c3     a1  
3   c4     a2  
4   c5     a1  
5   c6     a2

预期输出为:

  From  To  Volume
0   a2  a1      40
1   a2  a1      20

其中国家/地区名称应替换为相应的区域,然后使用数量列上的总和对表格进行分组。

我的方法是对“From”列使用“merge”两次,然后将结果合并到“To”列。最后,应用“groupby”对相同的“从-到”区域体积进行求和。 然而,我觉得有一个更短的方法可以做到这一点。有什么替代方案的建议吗?

最佳答案

您可以使用DataFrame.replaceSeries 然后 groupby聚合 sum:

s = country_area_mapping.set_index('Country')['Area']
df = country_to_country.replace({'From':s, 'To':s})
                       .groupby(['From','To'], as_index=False)['Volume'].sum()
print (df)
  From  To  Volume
0   a1  a2      40
1   a2  a1      20

关于python - 重命名列的条目,然后在 pandas 中重命名 groupby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45540150/

相关文章:

日期转换的 Python Pandas 问题

python - 慢 pd.to_datetime()

r - cast 函数非常耗内存,如何处理?

python - 使用 groupby 和 agg 为条形图准备数据框

python - 在Django中立即运行页面并返回给用户的正确方法是什么?

python - 获取没有任何空格的输入 - python

python - 重构游戏的 "to hit"值

python - py2app : SyntaxError: invalid character in identifier in setup file

python - 迭代更改 Pandas 数据框列中的每个单元格

python - 从数据框中的索引获取最小值