Python Pandas : converting several boolean columns into a (possibly repeated) column made up of the boolean column names

标签 python boolean dataframe pandas multiple-columns

假设我有下面的数据框:

>>> dfrm = pandas.DataFrame({
                             "A":[1,2,3], 
                             "id1":[True, True, False], 
                             "id2":[False, True, False]
                            })

>>> dfrm
   A    id1    id2
0  1   True  False
1  2   True   True
2  3  False  False

如何将两个 boolean 列展平为一个新列(这可能会导致 DataFrame 的行需要重复),以便在新列中出现所有 True 出现的条目。

具体来说,在上面的示例中,我希望输出如下所示:

index A   id1    id2   all_ids
    0 1  True  False       id1
    1 2  True   True       id1
    1 2  True   True       id2
    2 3 False  False       NaN

(最好不要在 all_ids 上建立多重索引,但如果这是唯一的方法,我会采取这种做法)。

我通常将其视为“从宽到长”,并将其相反(从一列到一堆 boolean 值)视为“从长到宽”。

Pandas 中有对此的内置支持吗?

最佳答案

我不记得在 pandas 中作为一句台词执行此操作的函数,但您可以执行以下操作:

In [35]: st = dfrm.ix[:, ['id1', 'id2']].stack()

In [36]: all_ids = Series(st.index.get_level_values(1), 
                          st.index.get_level_values(0),
                          name='all_ids')[st.values]

In [37]: dfrm.join(all_ids, how='left')
Out[37]: 
   A    id1    id2 all_ids
0  1   True  False     id1
1  2   True   True     id1
1  2   True   True     id2
2  3  False  False     NaN

关于Python Pandas : converting several boolean columns into a (possibly repeated) column made up of the boolean column names,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12588031/

相关文章:

python - 无法显示静态图像和 css 文件

python - 如何将 JSON 文件读入 Dataframe?

java - 简化几个 boolean 条件java

php - 第 10 行 C : mysql_result() expects parameter 1 to be resource, php 中给出的警告 :\wamp\www\Bitev3\core\functions\users. boolean 值

python main函数不返回数据框

python - Tensorflow 教程 : Duplicated Shuffling in the Input Pipeline

python - 什么是 Python 中的 InstrumentedList?

java - 如何在处理中使用 boolean 数组制作按钮?

scala - 映射 Spark 行中数组的每个值

python - 在 Salesforce 中使用默认值创建多个列