将列的名称保留在 groupby 中,并在 pandas 数据框中使用 sum
Posted
技术标签:
【中文标题】将列的名称保留在 groupby 中,并在 pandas 数据框中使用 sum【英文标题】:Keep the name of the columns in a groupby with sum in a pandas data frame 【发布时间】:2019-07-01 19:55:02 【问题描述】:我必须在 pandas 数据框中进行 groupby (),结果必须是具有相同列(相同名称和相同编号)的数据框。示例:
import pandas as pd
raw_data = 'first_name': ['Jason', 'Molly', 'Jason', 'Jake', 'Molly'],
'last_name': ['Miller', 'Jacobson', 'Miller', 'Milner', 'Jacobson'],
'age': [42, 73, 42, 24, 73],
'point_1': [4, 24, 31, 2, 93],
'point_2': [25, 94, 57, 62, 70]
df = pd.DataFrame(raw_data, columns = ['first_name', 'last_name', 'age',
'point_1', 'point_2'])
如果我尝试:
df.groupby(['first_name','last_name','age']).sum()
我有:
point_1 point_2
first_name last_name age
Amy Cooze 73 3 70
Jake Milner 24 2 62
Jason Miller 42 4 25
Molly Jacobson 52 24 94
Tina Ali 36 31 57
而我的专栏只有:
df.groupby(['first_name','last_name','age']).sum().columns.values
array(['point_1', 'point_2'], dtype=object)
但我还需要三个初始列。
【问题讨论】:
【参考方案1】:您分组的列成为索引。如果你不想这样:
df.groupby(['first_name','last_name','age']).sum().reset_index()
【讨论】:
【参考方案2】:在groupby
调用上将as_index
设置为False
应该可以做到。
df.groupby(['first_name','last_name','age'],as_index=False).sum()
【讨论】:
以上是关于将列的名称保留在 groupby 中,并在 pandas 数据框中使用 sum的主要内容,如果未能解决你的问题,请参考以下文章
Python Pandas:通过重复项将列组合在一起,并在相应列中连接字符串