Python 如果每个值相等,则删除数据帧行

Python 如果每个值相等,则删除数据帧行,python,pandas,Python,Pandas,如果我有一个pandas数据框,其中有一行包含浮点值,并且该行中的所有值都相等,那么如何从数据框中删除该行?用于测试每行的唯一值数,用于通过以下方式过滤出唯一行: 如果第一列不相等,则进行测试,如果每行至少有一个True,则通过以下方式进行测试: 编辑:如果要删除所有行和所有列,则应为具有loc和axis=0的测试列更改具有相同值的解决方案: df = pd.DataFrame({ 'B':[4,4,4,4,4,4], 'C':[4,4,9,4,2,3],

如果我有一个pandas数据框,其中有一行包含浮点值,并且该行中的所有值都相等,那么如何从数据框中删除该行?

用于测试每行的唯一值数,用于通过以下方式过滤出唯一行:

如果第一列不相等,则进行测试,如果每行至少有一个
True
,则通过以下方式进行测试:

编辑:如果要删除所有行和所有列,则应为具有
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)]

用于测试每行的唯一值数,用于筛选出唯一行,方法为:

如果第一列不相等,则进行测试,如果每行至少有一个
True
,则通过以下方式进行测试:

编辑:如果要删除所有行和所有列,则应为具有
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)]

您可以在轴=1上使用(每行):

您可以在轴=1上使用(每行):


提供数据快照和您尝试的一些代码总是有帮助的。提供数据快照和您尝试的一些代码总是有帮助的。这太棒了!非常感谢。如果我想删除具有相同属性的列,怎么样value@ZQH11-不客气!如果我的回答有帮助,别忘了。谢谢,太棒了!非常感谢。如果我想删除具有相同属性的列,怎么样value@ZQH11-不客气!如果我的回答有帮助,别忘了。谢谢
print (df2)
   C  D
2  9  5
3  4  7
4  2  1
5  3  0
# Example dataframe:
df = pd.DataFrame({'Col1':[1,2,3],
                   'Col2':[2,2,5],
                   'Col3':[4,2,9]})

   Col1  Col2  Col3
0     1     2     4
1     2     2     2  # <-- row with all same values
2     3     5     9
df[df.diff(axis=1).fillna(0).ne(0).any(axis=1)]

   Col1  Col2  Col3
0     1     2     4
2     3     5     9