【发布时间】:2018-12-10 19:36:19
【问题描述】:
我有两个数据框,df_1 和 df_2
df_1 有 30k+ 行,看起来像这样
Col_1_1 Col_1_2 CA_CB
a c CA
a c CB
a d CA
b c CA
b d CB
b d CB
b c CA
如果列 CA_CB = "CB",我想使用来自 df_2 的数据在 df_1 中创建两列
df_2 有 1k 行,看起来像这样(Col_2_1 具有唯一值)
Col_2_1 Col_2_2
a data on a
b data on b
c data on c
d data on d
我的输出应该是这样的:
Col_1_1 Col_1_2 CA_CB Col_target_1 Col_target_2
a c CA "X" "X"
a c CB data on a data on c
a d CA "X" "X"
b c CA "X" "X"
b d CB data on b data on d
b d CB data on b data on d
b c CA "X" "X"
我目前的做法是用
创建 Col_target_1 和 Col_target_2df_1["Col_target_1"] = "X"
df_2["Col_target_2"] = "X"
for i in range(len(df_1)):
if df_1["CA_CB"][i] == "CB":
for j in range(len(df_2)):
if df_1["Col_1_1"][i] == df_2["Col_2_1"][j]:
df_1["Col_target_1"][i] = df_2["Col_2_2"][j]
if df_1["Col_1_2"][i] == df_2["Col_2_1"][j]:
df_1["Col_target_2"][i] = df_2["Col_2_2"][j]
这正在做我想要的工作。但是这样做需要 20 多分钟,我想知道使用其他方法是否可以更快地运行。
提前谢谢你。
【问题讨论】:
标签: python python-3.x pandas dataframe series