删除值在Pandas

时间:2015-09-22 02:32:46

标签: python pandas

这是一个非常简单的数据框:

df = pd.DataFrame({'col1' :[1,2,3], 
                   'col2' :[1,3,3] })

我正在尝试删除存在重复值的行(例如,第3行)

这不起作用,

df = df[(df.col1 != 3 & df.col2 != 3)]

并且documentation非常明确为什么,这是有道理的。

但我仍然不知道如何删除该行。

有没有人有任何想法?谢谢。莫妮卡。

3 个答案:

答案 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