Python 如何将数据帧上的布尔列信息复制到另一个?

Python 如何将数据帧上的布尔列信息复制到另一个?,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下数据帧: ColA ColB Code Value FALSE FALSE J060 FALSE FALSE FALSE J010 FALSE FALSE TRUE J030 TRUE FALSE FALSE J111 FALSE TRUE TRUE Z290 FALSE FALSE FALSE B340 TRUE TRUE FALSE B340 FALSE

我有以下数据帧:

ColA    ColB    Code    Value
FALSE   FALSE   J060    FALSE
FALSE   FALSE   J010    FALSE
FALSE   TRUE    J030    TRUE    
FALSE   FALSE   J111    FALSE
TRUE    TRUE    Z290    FALSE
FALSE   FALSE   B340    TRUE
TRUE    FALSE   B340    FALSE
FALSE   TRUE    B340    FALSE
ColA、ColB和Value列是布尔列。我希望创建一个具有相同行数的新数据框,以便将布尔列的信息转换为字符串:

Code    BooleanInformation
J060    
J010    
J030    ColB,Value
J111    
Z290    ColA,ColB
B340    Value
B340    ColA
B340    ColB
代码列应保持不变。当第一个数据帧中出现真值时,应将列名(ColA、ColB或value)插入第二个数据帧上的字符串。

用于
code
列的索引,然后使用矩阵乘以所有不带
code
和分隔符的列,移除分隔符并将序列转换为数据帧:

df1 = (df.set_index('Code')
         .dot(df.columns.drop('Code') + ',')
         .str[:-1]
         .reset_index(name='BooleanInformation'))
仅选择布尔列的备选方案:

df1 = (df.set_index('Code')
         .dot(df.select_dtypes(bool).columns + ',')
         .str[:-1]
         .reset_index(name='BooleanInformation'))


你可以试试这样的

import pandas as pd

df = pd.read_csv('example.txt')

df[['ColA', 'ColB', 'Value']].astype(bool)

df['BooleanInformation'] = df.apply(lambda row: ','.join([column for column in df.columns if row[column] and column !='Code']), axis=1)

df.drop(df.columns[[0,1,3]], axis=1, inplace=True)

print(df)
import pandas as pd

df = pd.read_csv('example.txt')

df[['ColA', 'ColB', 'Value']].astype(bool)

df['BooleanInformation'] = df.apply(lambda row: ','.join([column for column in df.columns if row[column] and column !='Code']), axis=1)

df.drop(df.columns[[0,1,3]], axis=1, inplace=True)

print(df)