Python 将两个布尔列合并为一个
我有一个表,几乎没有标志列。(3家机构评级银行;所有情况互斥=>一次只打开一个标志。如果标志1有值,则标志2和标志3不会有任何值,依此类推) 等等 我想要的是: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
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标志时,其他两个标志的值为空