【发布时间】:2021-08-20 20:03:54
【问题描述】:
我有一个包含几列的 df,看起来有点像这样:
| A | B | C |
|---|---|---|
| NaN | 3 | 2 |
| 6 | 4 | NaN |
| 2 | 4 | NaN |
| 1 | NaN | NaN |
| NaN | NaN | NaN |
| ... | ... | ... |
我现在想创建一个新列,它是列“A”乘以标量 (df['D'] = df['A']*3),但仅适用于那些没有 NaN 的行。在有 NaN 值的行中,我想使用 B 列的同一行,如果还有 NaN,我想使用 C 列,依此类推。如果所有列都有 NaN,则该值也应该是 NaN。
我可以使用 for 循环逐行检查上述 if 语句,但这对于大 df 来说似乎非常低效。有没有更有效的方法可以在这里使用?也许以某种方式使用 df.apply?
对不起,如果这个问题很明显。
【问题讨论】:
标签: python pandas performance loops apply