Python 在每个子组内排序并将前三个值相加

Python 在每个子组内排序并将前三个值相加,python,pandas,Python,Pandas,我有一个熊猫数据框,有三列,州名,县名,人口。人口是一个数字数据。我想回答的问题是只看每个州人口最多的三个县,哪三个州人口最多。所以我想首先我需要按州名和县名分组。我能做到。但在那之后,我对如何进行感到困惑。我是熊猫队的新手,所以指导会有帮助,这里有一些虚拟数据(请在将来始终包括您的数据样本) 让我们将索引设置为State_Name和country_Name,并选择“Population”列,以便返回多索引pandas.Series df = pd.read_clipboard() # Coul

我有一个熊猫数据框,有三列,州名,县名,人口。人口是一个数字数据。我想回答的问题是只看每个州人口最多的三个县,哪三个州人口最多。所以我想首先我需要按州名和县名分组。我能做到。但在那之后,我对如何进行感到困惑。我是熊猫队的新手,所以指导会有帮助,这里有一些虚拟数据(请在将来始终包括您的数据样本)

让我们将索引设置为State_Name和country_Name,并选择“Population”列,以便返回多索引pandas.Series

df = pd.read_clipboard() # Could have done index_col=[0,1] here
df = df.set_index(['State_Name','County_Name'])
s = df.Population
现在您可以执行Series.groupby,然后在上面使用它(在数据帧上不起作用,这就是我使用Series的原因):

以下是一些虚拟数据(请在将来始终包含您的数据样本)

让我们将索引设置为State_Name和country_Name,并选择“Population”列,以便返回多索引pandas.Series

df = pd.read_clipboard() # Could have done index_col=[0,1] here
df = df.set_index(['State_Name','County_Name'])
s = df.Population
现在您可以执行Series.groupby,然后在上面使用它(在数据帧上不起作用,这就是我使用Series的原因):


检查pandas部分中的其他问题,查看它们如何显示输入/原始数据和预期输出。检查pandas部分中的其他问题,查看它们如何显示输入/原始数据和预期输出。
s.groupby(level='State_Name').nlargest(3)

State_Name  State_Name  County_Name
State1      State1      State1_B        8000
                        State1_E        2938
                        State1_D         876
State2      State2      State2_B       16000
                        State2_E        5876
                        State2_D         876
Name: Population, dtype: int64