在所有值都相同的大熊猫中删除行

时间:2020-06-07 22:15:34

标签: python pandas

我想删除所有值都相同的行。但是,我想要可以应用于1,2,3,4 ... n列的解决方案。

df = pd.DataFrame({"Col1":[1,4,2,5,1,4],
                  "Col2":[4,5,2,2,3,4],
                  "Col3":[5,1,2,5,1,4],
                  "Col4":[3,1,2,4,2,4]})

print(df)

   Col1  Col2  Col3  Col4
0     1     4     5     3
1     4     5     1     1
2     2     2     2     2    # delete
3     5     2     5     4
4     1     3     1     2
5     4     4     4     4    # delete

这是4列的示例,但我不知道如何找到解决方案。 因此,在这种情况下,应删除第2行和第5行。

3 个答案:

答案 0 :(得分:3)

nunique

df[df.nunique(axis=1) > 1]

   Col1  Col2  Col3  Col4
0     1     4     5     3
1     4     5     1     1
3     5     2     5     4
4     1     3     1     2

nunique(axis=1)告诉您一行中唯一值的数量:

df.nunique(axis=1)

0    4
1    3
2    1
3    3
4    3
5    1
dtype: int64

从这里进行比较,

df.nunique(axis=1) > 1 

0     True
1     True
2    False
3     True
4     True
5    False
dtype: bool

查找满足您条件的行,然后将布尔值索引到df中。

答案 1 :(得分:2)

std类似,标准偏差等于0表示所有值都相同

df[df.std(1)!=0]
   Col1  Col2  Col3  Col4
0     1     4     5     3
1     4     5     1     1
3     5     2     5     4
4     1     3     1     2

答案 2 :(得分:0)

许多清教徒/表演熊猫爱好者会杀死我,但是:

from pandas import DataFrame
df = DataFrame({"Col1":[1,4,2,5,1,4],
                  "Col2":[4,5,2,2,3,4],
                  "Col3":[5,1,2,5,1,4],
                  "Col4":[3,1,2,4,2,4]})
df_copy = df
for i,j in df_copy.iterrows():
    n_of_unique_elements = len(list(set(df_copy.iloc[i].values)))
    if n_of_unique_elements<=1:
        df = df.drop([i])
print(df)