gpt4 book ai didi

python - pandas - 在分组数据框中显示 N 个最高计数

转载 作者:行者123 更新时间:2023-12-05 01:54:54 25 4
gpt4 key购买 nike

这是我的输入数据框

df = pd.DataFrame([
['CA', 'LAX', 'Alice'],
['NY', 'NYC', 'Alice'],
['TX', 'HOU', 'Alice'],
['CA', 'SFO', 'Bob'],
['NY', 'NYC', 'Bob'],
['TX', 'AUS', 'Bob'],
['CA', 'LAX', 'Carol'],
['NY', 'ALB', 'Carol'],
['TX', 'HOU', 'Carol'],
['CA', 'LAX', 'Dan'],
['NY', 'NYC', 'Dan'],
['TX', 'DAL', 'Dan'],
['CA', 'SFO', 'Eve'],
['NY', 'NYC', 'Eve'],
['TX', 'AUS', 'Eve'],
['CA', 'SDO', 'Frank'],
['NY', 'NYC', 'Frank'],
['TX', 'HOU', 'Frank']],
columns=['State','City','Person'])

这是我希望得到的输出:

State City  Count       
CA LAX 3
SFO 2
NY ALB 1
NYC 5
TX HOU 3
AUS 2

基本上,我想显示每个州人口数量最多的前 2 个城市。

我试过使用这个 groupby 语句:df.groupby(['State','City'])['Person'].count()

生成以下输出

State  City         
CA LAX 3
SDO 1
SFO 2
NY ALB 1
NYC 5
TX AUS 2
DAL 1
HOU 3

但我无法提出可以对上述计数进行排序并选择最高的两个计数的语句。非常感谢您的帮助!

最佳答案

我认为你可以简化方法。

您可以使用 groupby.value_counts() 而不是 count() 来获取当前位置,然后链接另一个 groupby().head (2) 获取每个州的前 2 个城市。

原因是value_counts()结果对象将按降序顺序排列,因此第一个元素是最常出现的元素,因此您可以按原样使用head(2)

df.groupby('State')['City'].value_counts().groupby('State').head(2)

State City
CA LAX 3
SFO 2
NY NYC 5
ALB 1
TX HOU 3
AUS 2
Name: City, dtype: int64

关于python - pandas - 在分组数据框中显示 N 个最高计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70462533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com