Python 将两个布尔列合并为一个

Python 将两个布尔列合并为一个,python,pandas,merge,concat,Python,Pandas,Merge,Concat,我有一个表,几乎没有标志列。(3家机构评级银行;所有情况互斥=>一次只打开一个标志。如果标志1有值,则标志2和标志3不会有任何值,依此类推) 等等 我想要的是: BankName Flag1 Flag2 Flag3 Anyflag B1 TRUE TRUE B2 FALSE FALSE B3

我有一个,几乎没有标志列。(3家机构评级银行;所有情况互斥=>一次只打开一个标志。如果标志1有值,则标志2和标志3不会有任何值,依此类推)

等等

我想要的是:

  BankName     Flag1       Flag2    Flag3   Anyflag  
    B1         TRUE                           TRUE 
    B2                               FALSE    FALSE
    B3                      TRUE              TRUE
    B4          FALSE                         FALSE   
    B5                       TRUE             TRUE
基本上,我希望在一个单独的列中合并所有标志。我尝试了合并、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'
请提供帮助。

使用
any(axis='columns')

Ex:

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)
  BankName  Flag1 Flag2  Flag3  Anyflag
0       B1   True                  True
1       B2               False    False
2       B3         True            True
3       B4  False                 False
4       B5         True            True
输出:

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)
  BankName  Flag1 Flag2  Flag3  Anyflag
0       B1   True                  True
1       B2               False    False
2       B3         True            True
3       B4  False                 False
4       B5         True            True

您好,您尝试了什么?您可以使用any()来确定布尔值列表是否至少包含一个true。任何([True,False,False])返回True。也可以与none值一起使用:any([none,none,False])返回False。嗨,flag1、flag2、flag3等基本上是来自另一个数据集的切片。启用1标志时,其他两个标志的值为空