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)