Python / Pandas-从数据集中删除观测值

时间:2019-10-15 11:08:44

标签: python pandas dataframe if-statement drop-down-menu

我是使用熊猫的新手,如果有人可以帮助我解决这个问题,我将不胜感激。

我有以下数据框:

docker run -it --rm my_git

我想摆脱那些“价格”出现次数不等于4的观察。在这个例子中:-3000和-262是唯一出现4次的价格观察,因此我想只是为了保留那些。

如果有人能帮助我,我将非常感激。

2 个答案:

答案 0 :(得分:3)

GroupBy.transformsize一起用于与原始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.mapSeries.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