【发布时间】:2021-09-01 09:02:40
【问题描述】:
我有下表(df):
| ColA | ColB | ColC | ColD |
|---|---|---|---|
| A | A11 | None | Q1 |
| B | A21 | Q12 | None |
| A | A31 | S1 | None |
| C | A41 | W12 | None |
| B | A76 | None | O91 |
| A | A90 | A14 | None |
| C | A71 | None | 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 条件。我该如何解决?
期望的输出:
| ColA | ColB | ColC | ColD | ColE |
|---|---|---|---|---|
| A | A11 | None | Q1 | A11 |
| B | A21 | Q12 | None | Q12 |
| A | A31 | S1 | None | A31 |
| C | A41 | W12 | None | W12 |
| B | A76 | None | O91 | O91 |
| A | A90 | A14 | None | A90 |
| C | A71 | None | R31 | A71 |
【问题讨论】:
-
ColA中除了A, B, C之外还能有其他值吗? -
不,只有 A、B、C。
标签: python pandas dataframe merge concatenation