python - 如果每个值都相等,则删除 pandas 数据框行

标签 python pandas

如果我有一个 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)]

如果您想删除具有相同值的所有行和所有列,则应更改具有 locaxis=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/

相关文章:

python - 在 Pandas 中屏蔽工作日的特定时间段

python - 将包含字符串内列表的数据框列拆分为两列

python - 如何在 Python 中创建自定义分组 View ?

python - 选择 Pandas 中特定值后面包含 NaN 的行

python - Django 中的 Bootstrap 轮播实现

python - 尝试使用 MSI 身份验证从 Azure ML 服务连接 Azure SQL 数据库(无需用户名和密码即可连接 Azure 数据库)

python - 如何捕获多线程的异常?

python - 使用 google-perftools 编译 Python 2.7.2

python - 使用 python 从 HTML 中的类中打印所有文本

python - 执行 groupby 以查找日期范围内分配 ID 的累计计数