获取行和列熊猫布尔数据框

时间:2019-12-04 20:27:59

标签: python pandas

我有一个布尔型Pandas数据帧(所有值均为TrueFalse),我需要为每一行获取值为True的列。

任何想法我该怎么做?

3 个答案:

答案 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)