我有一个布尔型Pandas
数据帧(所有值均为True
或False
),我需要为每一行获取值为True
的列。
任何想法我该怎么做?
答案 0 :(得分:0)
使用[np.where(row)[0] for index, row in df.iterrows()]
它将产生一个numpy数组的列表,每行的索引值为True
。为列表列表添加.tolist()
。
无法堆叠结果数组,因为它们的长度可能不同。
示例:
df = pd.DataFrame([[True, False],[False,True],[True,True], [False,False]])
[np.where(row)[0].tolist() for _, row in df.iterrows()]
[[0], [1], [0, 1], []]
答案 1 :(得分:0)
谢谢大家的回答。
我设法用一个循环来解决它
代码如下:
chbay = {}
for item in levels:
baychan = convs[convs[item] == True]
chbay[item] = baych[item]
convs是数据集的名称,而level是数据集的列名称的列表。
我是Python新手,所以我的解决方案可能不是很整洁。我将尝试您提供的一些想法,以便学习新的方法。
非常感谢您。
答案 2 :(得分:0)
您可以尝试执行此操作,它会丢弃所有没有True匹配的行:
<node>a</node>
输出:
df.replace(False, np.NaN).dropna(how='all').replace(1.0, True).replace(np.NaN, False)