python - 如何仅显示值大于 x 的列
问题描述
我有一个包含 14000 行和 80 列的数据框,所有二进制条目(1 和 0),请参见下面的最小示例。我想为某个索引(行)显示所有值> 0的列。
import pandas as pd
import numpy as np
dat = np.array([[0,1,0,1,0,0],
[0,0,0,1,1,0],
[1,0,0,0,0,0],
[0,0,0,0,0,1],
[0,1,0,1,0,0]])
df= pd.DataFrame(dat, columns = ["p%d" % (i + 1) for i in range(6)])
预期/想要的输出是显示指定索引(行)的值 >0 的所有列:
p6
3 1
我尝试了以下方法,它显示了任何行中包含 1 的所有列:
df.loc[df.index == 3, df.gt(0).any()]
# out:
# p1 p2 p4 p5 p6
# 3 0 0 0 0 1
也试过.all()
了,这将显示所有行中都有 1 的列。这些按列操作,而不仅仅是索引 == 3 处的值,可能是因为它在逗号之后,所以我也尝试了这个,给出了错误:
df.loc[(df.index == 3) & (df.gt(0).any())]
# ValueError: operands could not be broadcast together with shapes (5,) (6,)
谢谢你
解决方案
IUIC,你可以使用
In [348]: c = df.loc[[3]]
In [349]: c.loc[:, c.gt(0).all()]
Out[349]:
p6
3 1
推荐阅读
- c# - 在使用 AutoMapper 映射时动态忽略属性
- c# - 如何通过使用其属性之一来选择类对象
- ember.js - Emberjs:有条件地转换到路由
- python - Expokit 在 Python 上的实现
- excel - 使用 Excel VBA 在 Word 文档标题中写入
- java - DynamoDB 查询和分区键,简单问题
- r - 当表名称中没有“_”时,问题写入非默认模式
- java - 如何使用 Xpath 在谷歌搜索中找到自动建议
- python-3.x - 如何在 python 中播放实时音频,同时不断录制?
- android - 在 Jenkins 的 Docker 容器中编译 Android 项目