Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除所有列中出现值的行_Python_Pandas - Fatal编程技术网

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']]