【发布时间】:2021-05-13 15:48:38
【问题描述】:
在以下示例 df 中,我想仅在 a = 1 时将 col c 和 d 中的值组合成一个新的 col e:
a c d
1 ab xy
0 cd zf
0 sd zk
1 df sd
我写了以下代码:
df['e'] = np.where(df['a'] == 1, ("ERR: " + df["c"] + " - " + df["d"]', np.NaN)
它不工作。我收到以下错误:TypeError: can only concatenate str (not "map") to str
我可以通过创建一个临时列来解决这个问题,该列将两列中的值组合起来并改用它。但如果可能的话,希望有一种方法可以直接在这里完成。
使用 temp col 的解决方案:
dfCM['b'] = "ERR: " + dfCM["c"] + " - " + dfCM["d"]
df['e'] = np.where(df['a'] == 1, df[b'], np.NaN)
想要的结果:
a c d e
1 ab xy ERR: ab-xy
0 cd zf
0 sd zk
1 df sd ERR: df-sd
谢谢
【问题讨论】:
-
好的,解决了。问题不在于上面的代码,而是上游的更改在我的数据框的“d”列中插入了“
标签: python numpy where-clause