我有一个与所有FIFA 19球员在一起的数据框。我已经使用 group by 来获得球员水平最高的前10个国家/地区(最佳,即总体平均水平最高的国家),仅包括数据框内拥有250名以上球员的国家/地区。
df[df.groupby('Nationality')['Overall'].transform('size') > 250].groupby(['Nationality'])['Overall'].mean().nlargest(10)
现在,我想获取整个数据框,包括所有列,但仅包含前10个国家/地区。我该怎么办?
更新:
创建示例以更好地说明:
import pandas as pd
df = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice','Rick'],
'income': [40000, 50000, 42000, 10000],
'country':['Brazil','USA','Brazil','Canada']})
df[df.groupby('country')['income'].transform('size') > 1].groupby(['country'])['income'].mean().nlargest(2)
我只想在此数据框上过滤巴西
答案 0 :(得分:1)
您可以在“前N个”数据框中使用country
的值来子集原始数据框。
import pandas as pd
df = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice','Rick'],
'income': [40000, 50000, 42000, 10000],
'country':['Brazil','USA','Brazil','Canada']})
top = df[df.groupby('country')['income'].transform('size') > 1].groupby(['country'])['income'].mean().nlargest(2)
df_top = df.loc[df['country'].isin(top.reset_index()['country'])]