我有一个pandas数据框,有三列,State_Name,County_Name,Population。人口是一种数字数据。我想回答的问题只是看每个州三个人口最多的县,三个人口最多的州是什么。所以我想首先我需要通过State_Name和County_Name进行分组。我能做到。但在那之后我对如何继续感到困惑。我是熊猫新手,所以指导会有所帮助
答案 0 :(得分:3)
这是一些虚拟数据(请在将来随时提供您的数据样本)。
State_Name,County_Name,Population
State1,State1_A,100
State1,State1_B,8000
State1,State1_C,75
State1,State1_D,876
State1,State1_E,2938
State2,State2_A,200
State2,State2_B,16000
State2,State2_C,75
State2,State2_D,876
State2,State2_E,5876
让我们将索引设置为State_Name和County_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然后使用nlargest(不适用于数据帧,这就是我使用系列的原因):
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