我正在努力弄清楚如何从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)
任何帮助表示赞赏,谢谢!
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)
querydf.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.vectorizeimport 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)
比你想象的更快!
| 归档时间: |
|
| 查看次数: |
398 次 |
| 最近记录: |