Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在熊猫中聚集相似的行_Python_Pandas - Fatal编程技术网

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()