如果我有一个 pandas 数据框,其中有一行包含浮点值,并且该行中的所有值都相等,如何从数据框中删除该行?
最佳答案
使用DataFrame.nunique
用于测试每行唯一值的数量 Series.ne
用于通过boolean indexing
过滤掉唯一的行:
df1 = df[df.nunique(axis=1).ne(1)]
或者测试第一列是否不相等,并通过 DataFrame.any
测试每行是否至少有一个 True
:
df1 = df[df.ne(df.iloc[:, 0], axis=0).any(axis=1)]
如果您想删除具有相同值的所有行和所有列,则应更改具有 loc
和 axis=0
的测试列解决方案:
df = pd.DataFrame({
'B':[4,4,4,4,4,4],
'C':[4,4,9,4,2,3],
'D':[4,4,5,7,1,0],
})
print (df)
B C D
0 4 4 4
1 4 4 4
2 4 9 5
3 4 4 7
4 4 2 1
5 4 3 0
df2 = df.loc[df.nunique(axis=1).ne(1), df.nunique(axis=0).ne(1)]
对于第二种解决方案:
df2 = df.loc[df.ne(df.iloc[:, 0], axis=0).any(axis=1), df.ne(df.iloc[0], axis=1).any(axis=0)]
<小时/>
print (df2)
C D
2 9 5
3 4 7
4 2 1
5 3 0
关于python - 如果每个值都相等,则删除 pandas 数据框行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59115262/