合并 pandas 中的列 if none

Merging columns in pandas if none

我有以下 table (df):

ColA ColB ColC 寒冷
一个 A11 None Q1
B A21 Q12 None
一个 A31 S1 None
C A41 W12 None
B A76 None O91
一个 A90 A14 None
C A71 None R31

输出 table 应包含另一列 (ColE),这样,ColA 值 A 始终来自 ColB,B 和 C 来自 ColC、ColD。如果 ColC 值为 none,它应该从 ColD 中获取值。到目前为止我尝试了什么?

if 'A' in df.ColA:
        df['ColE'] = df['ColB']
elif 'B' or 'C' in df.ColA:
        df['ColE']=df['ColC'].fillna(df['ColD'])

df['ColE']=[df['ColB'] if 'A' in df['ColA'] else df['ColC'].fillna(df['ColD'])]

但是,这并没有合并所有的值。它只适用于一个 if 条件。我该如何解决?

期望的输出:

ColA ColB ColC 寒冷 科尔
一个 A11 None Q1 A11
B A21 Q12 None Q12
一个 A31 S1 None A31
C A41 W12 None W12
B A76 None O91 O91
一个 A90 A14 None A90
C A71 None R31 A71

我们可以通过检查 ColAA 的存在来创建布尔掩码,然后将此掩码与 np.where、select 来自 [=15] 的值一起使用=] 如果掩码保持 True 否则 select 来自 ColC/ColD 的值优先于 ColC

m = df['ColA'].eq('A')
df['ColE'] = np.where(m, df['ColB'], df['ColC'].fillna(df['ColD']))

  ColA ColB  ColC  ColD ColE
0    A  A11  None    Q1  A11
1    B  A21   Q12  None  Q12
2    A  A31    S1  None  A31
3    C  A41   W12  None  W12
4    B  A76  None   O91  O91
5    A  A90   A14  None  A90
6    C  A71  None   R31  R31