删除一列中的值等于另一列中的值的行

4 python pandas

我正在努力弄清楚如何从pandas数据框中删除行,其中两个指定的列在一行中具有相同的值.

例如,在下面的示例中,我想删除第2列和第4列中具有重复值的行.

例如:

Column1 Column2 Column3 Column4
  Pat     123     John    456
  Pat     123     John    345 
  Jimmy   678     Mary    678 
  Larry   678     James   983
Run Code Online (Sandbox Code Playgroud)

会变成:

Column1 Column2 Column3 Column4
  Pat     123     John    456 
  Pat     123     John    345
  Larry   678     James   983
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏,谢谢!

cs9*_*s95 7

Series.ne(!=)

df[df['Column2'] != df['Column4']]

  Column1  Column2 Column3  Column4
0     Pat      123    John      456
1     Pat      123    John      345
3   Larry      678   James      983
Run Code Online (Sandbox Code Playgroud)

或者,使用operator.ne:

df[operator.ne(df['Column2'], df['Column4'])]

  Column1  Column2 Column3  Column4
0     Pat      123    John      456
1     Pat      123    John      345
3   Larry      678   James      983
Run Code Online (Sandbox Code Playgroud)

比较两者; 得到一个面具,然后过滤.

有了loc,我们也可以提供回调(由@WB建议!).

df.loc[lambda x : x['Column2'] != x['Column4']]

  Column1  Column2 Column3  Column4
0     Pat      123    John      456
1     Pat      123    John      345
3   Larry      678   James      983
Run Code Online (Sandbox Code Playgroud)

query

df.query('Column2 != Column4')

  Column1  Column2 Column3  Column4
0     Pat      123    John      456
1     Pat      123    John      345
3   Larry      678   James      983
Run Code Online (Sandbox Code Playgroud)

np.vectorize

import operator
f = pd.np.vectorize(lambda x, y: x != y)
df[f(df['Column2'], df['Column4'])]

  Column1  Column2 Column3  Column4
0     Pat      123    John      456
1     Pat      123    John      345
3   Larry      678   James      983
Run Code Online (Sandbox Code Playgroud)

...纯娱乐.


列表理解

df[[x != y for x, y in zip(df['Column2'], df['Column4'])]]

  Column1  Column2 Column3  Column4
0     Pat      123    John      456
1     Pat      123    John      345
3   Larry      678   James      983
Run Code Online (Sandbox Code Playgroud)

比你想象的更快!

  • `df.loc [lambda x:x ['Column2']!= x ['Column4']]` (2认同)