[英]Merging columns in pandas if none
我有下表(df):
可乐 | 哥伦比亚大学 | 柯尔克 | 寒冷的 |
---|---|---|---|
一种 | A11 | 没有任何 | 第一季度 |
乙 | A21 | Q12 | 没有任何 |
一种 | A31 | S1 | 没有任何 |
C | A41 | W12 | 没有任何 |
乙 | A76 | 没有任何 | O91 |
一种 | A90 | A14 | 没有任何 |
C | A71 | 没有任何 | R31 |
输出表应包含另一列 (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 条件。 我该如何解决?
期望的输出:
可乐 | 校本 | 柯尔克 | 寒冷的 | 油菜 |
---|---|---|---|---|
一种 | A11 | 没有任何 | 第一季度 | A11 |
乙 | A21 | Q12 | 没有任何 | Q12 |
一种 | A31 | S1 | 没有任何 | A31 |
C | A41 | W12 | 没有任何 | W12 |
乙 | A76 | 没有任何 | O91 | O91 |
一种 | A90 | A14 | 没有任何 | A90 |
C | A71 | 没有任何 | R31 | A71 |
我们可以通过检查的情况下创建一个布尔口罩A
在ColA
,然后用这个面膜用np.where
,从选择值ColB
如果屏蔽持有True
,否则选择的值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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.