Pandas groupby之后的不同列上的选择
我是熊猫的新手,因此请耐心对待这个问题 我有一个Df,其中包含多年来在许多州收集的年份、州和人口数据 我想找到任何一年的最大pop和相应的状态 例如:Pandas groupby之后的不同列上的选择,pandas,max,loc,Pandas,Max,Loc,我是熊猫的新手,因此请耐心对待这个问题 我有一个Df,其中包含多年来在许多州收集的年份、州和人口数据 我想找到任何一年的最大pop和相应的状态 例如: 1995 Alabama xx; 1196 New York yy; 1997 Utah zz 我做了一个群比,得到了一年内所有州的人口;我如何在这些年中进行迭代 state_yearwise = df.groupby(["Year", "State"])["Pop"].max() state_yearwise.head(10) 1990 A
1995 Alabama xx; 1196 New York yy; 1997 Utah zz
我做了一个群比,得到了一年内所有州的人口;我如何在这些年中进行迭代
state_yearwise = df.groupby(["Year", "State"])["Pop"].max()
state_yearwise.head(10)
1990 Alabama 22.5
Arizona 29.4
Arkansas 16.2
California 34.1
2016 South Dakota 14.1
Tennessee 10.2
Texas 17.4
Utah 16.1
现在我做到了
df.loc[df.pop == df.pop.max(), ["year", "State", "pop"]]
1992 Colorado 54.1
只给我1年,所有年份和州的最大值
我想要的是每年哪个州的人口最多
建议?这就是你想要的:
df = pd.DataFrame([{'state' : 'A', 'year' : 2000, 'pop' : 100},
{'state' : 'A', 'year' : 2001, 'pop' : 110},
{'state' : 'B', 'year' : 2000, 'pop' : 210},
{'state' : 'B', 'year' : 2001, 'pop' : 200}])
maxpop = df.groupby("state",as_index=False)["pop"].max()
pd.merge(maxpop,df,how='inner')
我看到df的df
:
pop state year
0 100 A 2000
1 110 A 2001
2 210 B 2000
3 200 B 2001
至于最终结果:
state pop year
0 A 110 2001
1 B 210 2000
证明这是有效的:
这就是你想要的吗:
df = pd.DataFrame([{'state' : 'A', 'year' : 2000, 'pop' : 100},
{'state' : 'A', 'year' : 2001, 'pop' : 110},
{'state' : 'B', 'year' : 2000, 'pop' : 210},
{'state' : 'B', 'year' : 2001, 'pop' : 200}])
maxpop = df.groupby("state",as_index=False)["pop"].max()
pd.merge(maxpop,df,how='inner')
我看到df的df
:
pop state year
0 100 A 2000
1 110 A 2001
2 210 B 2000
3 200 B 2001
至于最终结果:
state pop year
0 A 110 2001
1 B 210 2000
证明这是有效的:
您可以使用transform获取每列的最大值,并获取相应pop的索引
idx = df.groupby(['year'])['pop'].transform(max) == df['pop']
现在您可以使用idx索引df
df[idx]
你得到
pop state year
2 210 B 2000
3 200 B 2001
Year State County Pop
3 2015 Utah Monroe 12.1
4 2013 Alabama Newton 10.4
对于您更新的其他数据帧
Year State County Pop
0 2015 Mississippi Panola 6.4
1 2015 Mississippi Newton 6.7
2 2015 Mississippi Newton 6.7
3 2015 Utah Monroe 12.1
4 2013 Alabama Newton 10.4
5 2013 Alabama Georgi 4.2
idx = df.groupby(['Year'])['Pop'].transform(max) == df['Pop']
df[idx]
你得到
pop state year
2 210 B 2000
3 200 B 2001
Year State County Pop
3 2015 Utah Monroe 12.1
4 2013 Alabama Newton 10.4
您可以使用transform获取每列的最大值,并获取相应pop的索引
idx = df.groupby(['year'])['pop'].transform(max) == df['pop']
现在您可以使用idx索引df
df[idx]
你得到
pop state year
2 210 B 2000
3 200 B 2001
Year State County Pop
3 2015 Utah Monroe 12.1
4 2013 Alabama Newton 10.4
对于您更新的其他数据帧
Year State County Pop
0 2015 Mississippi Panola 6.4
1 2015 Mississippi Newton 6.7
2 2015 Mississippi Newton 6.7
3 2015 Utah Monroe 12.1
4 2013 Alabama Newton 10.4
5 2013 Alabama Georgi 4.2
idx = df.groupby(['Year'])['Pop'].transform(max) == df['Pop']
df[idx]
你得到
pop state year
2 210 B 2000
3 200 B 2001
Year State County Pop
3 2015 Utah Monroe 12.1
4 2013 Alabama Newton 10.4
为什么不一组一组地摆脱呢?通过使用
排序\u值
和删除重复项
df.sort_values(['state','pop']).drop_duplicates('state',keep='last')
Out[164]:
pop state year
1 110 A 2001
2 210 B 2000
为什么不一组一组地摆脱呢?通过使用
排序\u值
和删除重复项
df.sort_values(['state','pop']).drop_duplicates('state',keep='last')
Out[164]:
pop state year
1 110 A 2001
2 210 B 2000
感谢您展示了合并的概念;但是我试过了,在“合并”之后没有得到相同的结果。它不会像你一样选择每年的最大州数2015年2月0日密西西比州牛顿县6.1 1 2015年2月密西西比州帕诺拉县9.4 2 2015年2月密西西比州门罗县7.9 3 2015年2月密西西比州辛兹县5.3向我们展示你得到了什么。还显示df和maxpop的输出。最好是可读的格式。我正在以适当的格式添加表格,但它正在被弄乱;让我再次尝试一下(2004年)我方尝试一下(2004年)今年(2004年)年年(2004年)年(2004年)年(2004年)我再尝试一下今年今年(2004年)年(2004年)我我再尝试一下今年今年(2004年)年(2004年)年(2004年)年(2004年)年)我再尝试一下我我再尝试一下今年今年(2004年)年(2004年)年)年(2004年)今年今年今年今年今年今年)我我再尝试今年今年(2004年)年(2004年)今年今年今年今年今年今年(2004年)年)年,年,年年)我我我我方方今年今年今年(2004年)年(2004年,年)年,年,年年年年年年年年年年年年年年年年年年年年年)我我方方方方今年今年今年(2004年年)年年年年年年年年年年年年年年年年年,年年,年,年,年,年,年年年2015年犹他州门罗12.1更多2013年阿拉巴马州牛顿10.4更多感谢您展示了合并的概念;但是我试过了,在“合并”之后没有得到相同的结果。它不会像你一样选择每年的最大州数2015年2月0日密西西比州牛顿县6.1 1 2015年2月密西西比州帕诺拉县9.4 2 2015年2月密西西比州门罗县7.9 3 2015年2月密西西比州辛兹县5.3向我们展示你得到了什么。还显示df和maxpop的输出。最好是可读的格式。我正在以适当的格式添加表格,但它正在被弄乱;让我再次尝试一下(2004年)我方尝试一下(2004年)今年(2004年)年年(2004年)年(2004年)年(2004年)我再尝试一下今年今年(2004年)年(2004年)我我再尝试一下今年今年(2004年)年(2004年)年(2004年)年(2004年)年)我再尝试一下我我再尝试一下今年今年(2004年)年(2004年)年)年(2004年)今年今年今年今年今年今年)我我再尝试今年今年(2004年)年(2004年)今年今年今年今年今年今年(2004年)年)年,年,年年)我我我我方方今年今年今年(2004年)年(2004年,年)年,年,年年年年年年年年年年年年年年年年年年年年年)我我方方方方今年今年今年(2004年年)年年年年年年年年年年年年年年年年年,年年,年,年,年,年,年年年2015年犹他州门罗12.1更多2013年阿拉巴马州牛顿10.4更多我不认为
.pop
会起作用……因为pop在pandas中是一个函数……pop在起作用,但无论如何,由于pop()是一个函数,更好的做法是使用['pop']我不认为.pop
会起作用……因为pop在pandas中是一个函数……pop在起作用,但无论如何,由于pop()是一个函数,更好的做法是使用['pop']