Python 删除所有列中出现值的行
下面是一个非常简单的数据帧:Python 删除所有列中出现值的行,python,pandas,Python,Pandas,下面是一个非常简单的数据帧: df = pd.DataFrame({'col1' :[1,2,3], 'col2' :[1,3,3] }) 我试图删除存在重复值的行(例如,第3行) 这不管用 df = df[(df.col1 != 3 & df.col2 != 3)] 这个问题很清楚,这是有道理的 但我仍然不知道如何删除该行 有人有什么想法吗?谢谢莫妮卡。那么: In [43]: df = pd.DataFrame({'col1' :[1,2,
df = pd.DataFrame({'col1' :[1,2,3],
'col2' :[1,3,3] })
我试图删除存在重复值的行(例如,第3行)
这不管用
df = df[(df.col1 != 3 & df.col2 != 3)]
这个问题很清楚,这是有道理的
但我仍然不知道如何删除该行
有人有什么想法吗?谢谢莫妮卡。那么:
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]
我们希望删除其值显示在所有列中的行,或者换句话说,这些值相等=>它们的最小值和最大值相等。此方法适用于具有任意列数的
数据帧
。如果我们应用上述方法,我们将删除第0行和第2行。如果我正确理解了您的问题,我认为您已经接近了
从您的数据开始:
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
具有所有相同值的任何行的标准偏差为零。过滤它们的一种方法如下:
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
如果所有值都匹配或任何两个值匹配,是否要删除该行?这里不需要括号,这里只有一个布尔条件,另外,不鼓励将列作为属性访问,这样做更好,因为这样可以避免歧义
df[df['col1']!=df['col2']]