Python 在熊猫中聚集相似的行
我有一个数据框,它当前按邮政编码聚合,看起来类似于:Python 在熊猫中聚集相似的行,python,pandas,Python,Pandas,我有一个数据框,它当前按邮政编码聚合,看起来类似于: Year Organization State Zip Number_of_people 2021 A NJ 07090 5 2020 B AZ 09876 3 2021 A NJ 01234 2 2021 C VA 23456 7 20
Year Organization State Zip Number_of_people
2021 A NJ 07090 5
2020 B AZ 09876 3
2021 A NJ 01234 2
2021 C VA 23456 7
2019 A NJ 05385 1
我想按状态聚合dataframe和Number of People列,合并相同的行(除了人数),这样上面的数据看起来像这样:
Year Organization State Number_of_people
2021 A NJ 7
2020 B AZ 3
2021 C VA 7
2019 A NJ 1
换句话说,如果除人数外,所有列中的行都相同,我希望合并这些行并添加人数
删除Zip列后,我一直在思考如何解决这个问题--我想我需要按年份、组织和状态进行分组,但不确定之后该做什么
提前感谢您的帮助如果不想,您不必先放下拉链,请使用下面的语法
data = '''Year Organization State Zip Number_of_people
2021 A NJ 07090 5
2020 B AZ 09876 3
2021 A NJ 01234 2
2021 C VA 23456 7
2019 A NJ 05385 1'''
df = pd.read_csv(io.StringIO(data), sep='\s+', engine='python')
df[['Year','Organization','State', 'Number_of_people']].groupby(['Year','Organization','State']).sum().reset_index()
输出
Year Organization State Number_of_people
0 2019 A NJ 1
1 2020 B AZ 3
2 2021 A NJ 7
3 2021 C VA 7
如果确实要删除邮政编码,请使用以下方法:
df.groupby(['Year','Organization','State']).sum().reset_index()
没有邮政编码的更具Python风格的版本
df.groupby(['Year','Organization','State'], as_index=False)['Number_of_people'].sum()
df.groupby(['Year','Organization','State'], as_index=False).sum()
带有邮政编码的更具Python风格的版本
df.groupby(['Year','Organization','State'], as_index=False)['Number_of_people'].sum()
df.groupby(['Year','Organization','State'], as_index=False).sum()