【发布时间】:2019-10-01 12:33:07
【问题描述】:
我有一个表,其中很少有标志列。(3 个机构对银行进行评级;所有情况互斥 => 一次只有一个标志处于打开状态。如果标志 1 有值,标志 2 和标志 3 不会有任何价值等等)
BankName Flag1 Flag2 Flag3
B1 TRUE
B2 FALSE
B3 TRUE
B4 FALSE
B5 TRUE
等等。
我想要什么:
BankName Flag1 Flag2 Flag3 Anyflag
B1 TRUE TRUE
B2 FALSE FALSE
B3 TRUE TRUE
B4 FALSE FALSE
B5 TRUE TRUE
基本上,我希望将标志整体组合在一个单独的列中。我尝试过合并、合并,但它们似乎不适用于布尔列。
试过了:
[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() 来确定一个布尔值列表是否至少包含一个 true。 any([True, False, False]) 返回 True。也可以与 none 值一起使用:any([None, None, False]) 返回 False。
-
嗨,flag1、flag2、flag3 等基本上是来自另一个数据集的切片。当 1 个标志打开时,其他两个标志的值为空
标签: python pandas merge concat