【发布时间】:2019-07-18 14:38:17
【问题描述】:
我想向 test_df 添加一个新列,其中包含列 a 或 b 的值,具体取决于 change_col 以及 change 是否为 True。下面的 for 循环可以工作,但是太慢了。 如何使用 apply 或类似方法添加新列?
test_df = pd.DataFrame({"a":[1,1,2,3],
"b":["ant","ber","cas","dor"],
"change_col":["a","b","b","a"],
"change":[True,True,True,False]})
a b change_col change
0 1 ant a True
1 1 ber b True
2 2 cas b True
3 3 dor a False
所需的df:
a b change_col change new_value
0 1 ant a True 1
1 1 ber b True ber
2 2 cas b True cas
3 3 dor a False NaN
我的for循环
new_value= []
for _ , row in test_df.iterrows():
if row["change"] is True:
new_value +=[row[row["change_column"]]]
else:
new_value += [np.NaN]
test_df["new_value"] = new_value
我在 python 3.7 上使用 pandas 0.24.2。
【问题讨论】:
-
不同意重复,这不是简单的查找。在 Vaishali 的回答下查看我的评论
标签: python-3.x pandas