【发布时间】:2018-04-08 09:04:54
【问题描述】:
我有两个 DF:
df1 = pd.DataFrame({'A':[3, 2, 5, 1, 6], 'B': [4, 6, 5, 8, 2], 'C': [4, 8, 3, 8, 0], 'D':[1, 4, 2, 8, 7], 'zebra': [5, 7, 2, 4, 8]})
df2 = pd.DataFrame({'B': [7, 3, 5, 1, 8], 'D':[4, 5, 8, 2, 3] })
print(df1)
print(df2)
A B C D zebra
0 3 4 4 1 5
1 2 8 8 5 7
2 5 5 3 2 2
3 1 6 8 5 4
4 6 2 0 7 8
B D
0 7 4
1 3 5
2 5 8
3 8 5
4 8 3
这是一个简单的例子,实际上 df1 有 1000k+ 行和 10+ 列,df2 只有 24 行和更少的列。我想循环df2中的所有行并将df2中的那些特定行(例如列'B'和'D')与df1中的相同列名进行比较,如果行值匹配(如果B列和D列中的值在df2 匹配相同列但在 df1) 中的相同值,以将该行中的相应斑马值分配给 df2 中的同一行,创建新列斑马并分配该值。如果没有找到匹配来分配 0 或 NaN。
B D zebra
0 7 4 nan
1 3 5 nan
2 5 8 nan
3 8 5 7
4 8 3 nan
从示例中,仅 df2 中的行索引 3 匹配值 'B': 8 和 'D':5 与来自 df1 的索引为 2 的行(注意:行索引在比较中不应该很重要)并分配相应的行值7 从“斑马”列到 df2。
【问题讨论】: