我是使用熊猫的新手,如果有人可以帮助我解决这个问题,我将不胜感激。
我有以下数据框:
docker run -it --rm my_git
我想摆脱那些“价格”出现次数不等于4的观察。在这个例子中:-3000和-262是唯一出现4次的价格观察,因此我想只是为了保留那些。
如果有人能帮助我,我将非常感激。
答案 0 :(得分:3)
将GroupBy.transform
与size
一起用于与原始df
一样大小的系列的每个组的计数,因此可以通过boolean indexing
进行过滤:
df = df[df.groupby('Price')['Price'].transform('size') == 4]
或使用DataFrameGroupBy.filter
,但在大型DataFrame中,它应该较慢:
df = df.groupby('Price').filter(lambda x: len(x) == 4)
或将Series.map
与Series.value_counts
:
df = df[df['file'].map(df['file'].value_counts()) == 4]
print (df)
Price Volume
0 -3000 8133
1 -262 28287
3 -3000 20242
4 -262 19428
6 -3000 18147
7 -262 17234
9 -3000 18147
10 -262 17234
答案 1 :(得分:1)
您还可以使用Series.value_counts
+ Series.map
:
df[df['Price'].map(df['Price'].value_counts()) == 4)]
Price Volume
0 -3000 8133
1 -262 28287
3 -3000 20242
4 -262 19428
6 -3000 18147
7 -262 17234
9 -3000 18147
10 -262 17234