这是一个非常简单的数据框:
df = pd.DataFrame({'col1' :[1,2,3],
'col2' :[1,3,3] })
我正在尝试删除存在重复值的行(例如,第3行)
这不起作用,
df = df[(df.col1 != 3 & df.col2 != 3)]
并且documentation非常明确为什么,这是有道理的。
但我仍然不知道如何删除该行。
有没有人有任何想法?谢谢。莫妮卡。
答案 0 :(得分:1)
如果我理解你的问题,我认为你很接近。
从您的数据开始:
In [20]: df
Out[20]:
col1 col2
0 1 1
1 2 3
2 3 3
这样做:
In [21]: df = df[df['col1'] != df['col2']]
返回:
In [22]: df
Out[22]:
col1 col2
1 2 3
答案 1 :(得分:0)
怎么样:
In [43]: df = pd.DataFrame({'col1' :[1,2,3],
'col2' :[1,3,3] })
In [44]: df[df.max(axis=1) != df.min(axis=1)]
Out[44]:
col1 col2
1 2 3
[1 rows x 2 columns]
我们希望删除其值显示在所有列中的行,或者换句话说,值等于=>他们的最小值和最大值是相等的。此方法适用于具有任意数量列的DataFrame
。如果我们应用上述内容,则删除第0行和第2行。
答案 2 :(得分:0)
具有所有相同值的任何行都具有零作为标准偏差。过滤它们的一种方法如下:
import pandas as pd
import numpy as np
df = pd.DataFrame({'col1' :[1, 2, 3, np.nan],
'col2' :[1, 3, 3, np.nan]}
>>> df.loc[df.std(axis=1, skipna=False) > 0]
col1 col2
1 2