在Pandas中合并2个布尔列

2024-03-29 01:40:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个表格,只有几个标志栏(3家评级机构评定银行;所有案例互斥=>;在同一时间只有一个标志处于启用状态。如果flag1有值,flag2和flag3就没有值,依此类推)

  BankName     Flag1       Flag2    Flag3  
    B1         TRUE         
    B2                                FALSE
    B3                      TRUE
    B4          FALSE  
    B5                       TRUE 

等等。在

我想要的:

^{2}$

基本上,我希望在一个单独的列中组合这些标志。我尝试过merge、concat,但它们似乎不适用于布尔列。

尝试过:

[IN]:
df['Any flag']=pd.concat(df['Flag1'], df['Flag2'], df['Flag3'])
[OUT]
TypeError: first argument must be an iterable of pandas objects, you 
passed an object of type "Series"
[IN]:
df['Any flag']=pd.concat(df['Flag1'], df['Flag2'], df['Flag3'], axis=0)
[OUT]
TypeError: concat() got multiple values for argument 'axis'

请帮忙。在


Tags: infalsetruedf标志anyoutargument
1条回答
网友
1楼 · 发布于 2024-03-29 01:40:20

使用any(axis='columns')

例如:

data = [ ['B1', True, '', ''],
 ['B2', '', '', False],
 ['B3', '', True, ''],
 ['B4', False, '', ''],
 ['B5','', True, '']]

df = pd.DataFrame(data, columns=['BankName', 'Flag1', 'Flag2', 'Flag3'])
df["Anyflag"] = df[['Flag1', 'Flag2', 'Flag3']].any(axis='columns')
print(df)

输出:

^{pr2}$

相关问题 更多 >