基于对多列 pandas python 的逻辑操作更新另一列

我有一个熊猫数据框如下。我想从逻辑上检查多列(A,B,C)并使用 OR 操作更新 D 列,并通过 E 列中的逗号分隔更新具有 true 的列名。我不确定如何实现它。任何线索都会有所帮助。


A     B     C      D     E

True  True  True   True  A,B,C

True  False True   True  A,C

False False False  False NA

False False True   True  C       

编辑 :


cols = ['A','B','C']

df['D'] = np.where(df[cols].eq(True).any(1), True, False)

我能够想出 D 列,但不确定如何处理 E 列


交互式爱情
浏览 159回答 2
2回答

慕容森

使用DataFrame.dot+Series.str.rstrip和Series.replace:cols = pd.Index(['A', 'B', 'C'])df['E'] = df[cols].dot(cols + ',').str.rstrip(',').replace('', np.nan)结果:# print(df)       A      B      C      D      E0   True   True   True   True  A,B,C1   True  False   True   True    A,C2  False  False  False  False    NaN3  False  False   True   True      C

红颜莎娜

另一种方法是使用stacks = df[cols].stack()df['F'] = s[s.eq(True)].reset_index(1).groupby(level=0)['level_1'].agg(','.join)print(df)       A      B      C      D      E      F0   True   True   True   True  A,B,C  A,B,C1   True  False   True   True    A,C    A,C2  False  False  False  False    NaN    NaN3  False  False   True   True      C      C
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python