Python 使用Pandas返回嵌套排序数据帧的NLAGEST
我正在努力使用一个dataframe,它列出了大量数据,如果有意义的话,它有几个过滤级别。所以我的数据现在是按州名字母顺序排序的。第二级过滤适用于每个县的人口数据。我使用的过滤是Python 使用Pandas返回嵌套排序数据帧的NLAGEST,python,pandas,Python,Pandas,我正在努力使用一个dataframe,它列出了大量数据,如果有意义的话,它有几个过滤级别。所以我的数据现在是按州名字母顺序排序的。第二级过滤适用于每个县的人口数据。我使用的过滤是df.sort\u values()。我现在需要提取每个州最高的三个人口县的统计数据,我不知道如何实现这一点 因此,我的数据如下所示(我在这里省略了行索引): 现在我想从我的数据框中得到每个州人口最多的县。由于没有和熊猫一起工作过,我最初的猜测是要为它们做一次尝试。类似这样的东西(显然是有害的): 即使在打这个的时候,我
df.sort\u values()
。我现在需要提取每个州最高的三个人口县的统计数据,我不知道如何实现这一点
因此,我的数据如下所示(我在这里省略了行索引):
现在我想从我的数据框中得到每个州人口最多的县。由于没有和熊猫一起工作过,我最初的猜测是要为它们做一次尝试。类似这样的东西(显然是有害的):
即使在打这个的时候,我知道它并不完全有意义,但我不知道如何更好地解释它。希望有人能帮忙
干杯我想你需要:
然后从第二级开始,通过以下方式选择:
你可以用
df.sort\u值('State','Population')
在那之后,你可以使用
df.groupby('State')。标题(3)
简言之:
s = df.sort_values(['State','Population'],ascending=False).groupby('State').head(3)
很抱歉,您是在寻找
df.groupby('State')['Population'].nlargest(3)
?您使用上述代码片段中的索引将其索引回主df:df.loc[df.groupby('State')['Population'].nlargest(3).index.get_level_value(1)]
Hi Ed,是的,这就是我想要的。我还在思考如何思考熊猫。别忘了排除sumlev==40行;)非常感谢。这看起来很简单,但我已经为此挣扎了几个小时。。。我爱这个社区!是的,我用过这个,但它只对我的数据帧排序。我需要提取每个州最高的三个人口。我已经实现了Jezraels解决方案,它像一个符咒一样工作。头(3)将提取它。
list_l = []
for i in df['State'].unique(): #Get a series with every unique state listed once
list_l.append(df[(df['State'] == i])).nlargest(3)
return list_l
s = df.groupby('State')['Population'].nlargest(3)
print (s)
State
Alabama 0 100
1 50
2 40
Wyoming 5 180
6 150
7 56
Name: Population, dtype: int64
print (s.index.get_level_values(1))
Int64Index([0, 1, 2, 5, 6, 7], dtype='int64')
print (df.ix[s.index.get_level_values(1)])
State County Population
0 Alabama a 100
1 Alabama b 50
2 Alabama c 40
5 Wyoming a.51 180
6 Wyoming b.51 150
7 Wyoming c.51 56
s = df.sort_values(['State','Population'],ascending=False).groupby('State').head(3)