我怎样做一个"永远"在pandas数据帧中过滤

时间:2018-04-02 11:13:27

标签: python pandas

很抱歉没有明确问题标题,所以我将在数据集上进行描述

Id   Item
1    North
1    South
1    West
1    Central
2    North
2    South
2    East
3    North
3    East

我想过滤,例如never West

Id   Item
2    North
2    South
2    East
3    North
3    East

这只是来自Id的{​​{1}}的显示数据。

2 个答案:

答案 0 :(得分:1)

使用:

df = df[~df['Id'].isin(df.loc[df['Item'] == 'West', 'Id'])]
print (df)
   Id   Item
4   2  North
5   2  South
6   2   East
7   3  North
8   3   East

<强>详情:

print (df.loc[df['Item'] == 'West', 'Id'])
2    1
Name: Id, dtype: int64

print (~df['Id'].isin(df.loc[df['Item'] == 'West', 'Id']))
0    False
1    False
2    False
3    False
4     True
5     True
6     True
7     True
8     True
Name: Id, dtype: bool

<强>解释

  1. 首先过滤West并获取Id
  2. isin再次过滤,并按~
  3. 反转布尔值掩码

答案 1 :(得分:0)

如果您的数据框名为df,则可以根据Item不等于West进行过滤:

df[df['Item'] != 'West']