Python 根据总行数的分数在数据帧中删除行
在上面的数据框中,我想删除占总面积百分比<10%的行。在本例中,这将是所有州为爱荷华州的行。在熊猫身上最好的方法是什么?我试过groupby,但不知道如何继续Python 根据总行数的分数在数据帧中删除行,python,pandas,Python,Pandas,在上面的数据框中,我想删除占总面积百分比
country state year area
usa iowa 2000 30
usa iowa 2001 30
usa iowa 2002 30
usa iowa 2003 30
usa kansas 2000 500
usa kansas 2001 500
usa kansas 2002 500
usa kansas 2003 500
usa washington 2000 245
usa washington 2001 245
usa washington 2002 245
usa washington 2003 245
您希望获取每个
状态中的任何区域
值
,并将其相加。我选第一个
是我们规范化的对象groupby('state').area.first().sum()
另一个解决方案具有和双重功能:
谢谢@piRSquared,本例中的正确区域为30+500+245。您的解决方案可以将整个列相加,对吗?
df.groupby('area').sum()
df[df.area.div(df.groupby('state').area.first().sum()) >= .1]
country state year area
4 usa kansas 2000 500
5 usa kansas 2001 500
6 usa kansas 2002 500
7 usa kansas 2003 500
8 usa washington 2000 245
9 usa washington 2001 245
10 usa washington 2002 245
11 usa washington 2003 245
a = df.drop_duplicates(['state','area'])
print (a)
country state year area
0 usa iowa 2000 30
4 usa kansas 2000 500
8 usa washington 2000 245
states = a.loc[a.area.div(a.area.sum()) >.1, 'state']
print (states)
4 kansas
8 washington
Name: state, dtype: object
print (df[df.state.isin(states)])
country state year area
4 usa kansas 2000 500
5 usa kansas 2001 500
6 usa kansas 2002 500
7 usa kansas 2003 500
8 usa washington 2000 245
9 usa washington 2001 245
10 usa washington 2002 245
11 usa washington 2003 245