【发布时间】:2019-01-13 11:12:01
【问题描述】:
我有一个包含 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,)
谢谢你
【问题讨论】:
标签: python arrays pandas dataframe slice