Rah*_*wal 1 python dataframe pandas
我有两个数据框 d1 和 d2 如下:
d1
A B C D
X 6 7 23
Y 3 4 35
B 5 8 45
D 11 7 15
L 10 1 5
Run Code Online (Sandbox Code Playgroud)
d2
A C
Y 4
L 1
D 7
Run Code Online (Sandbox Code Playgroud)
并希望 d1 E 中的新列如下:
A B C D E
X 6 7 23 0
Y 3 4 35 1
B 5 8 45 0
D 11 7 15 1
L 10 1 5 1
Run Code Online (Sandbox Code Playgroud)
根据 d2 的 A 列和 C 列中的数据与 d1 的 A 列和 C 列中的数据匹配的情况添加新列 E,展位数据框中的行数不同。
我将使用merge(对于 LEFT OUTER JOIN)带有指示器:
d1['E'] = (d1.merge(d2, on=['A', 'C'], how='left', indicator=True)
.eval('_merge == "both"')
.astype(int))
d1
A B C D E
0 X 6 7 23 0
1 Y 3 4 35 1
2 B 5 8 45 0
3 D 11 7 15 1
4 L 10 1 5 1
Run Code Online (Sandbox Code Playgroud)
这是使用元组转换和检查的低效方法isin:
d1['E'] = (
d1[['A', 'C']].apply(tuple, axis=1).isin(d2.apply(tuple, axis=1)).astype(int))
d1
A B C D E
0 X 6 7 23 0
1 Y 3 4 35 1
2 B 5 8 45 0
3 D 11 7 15 1
4 L 10 1 5 1
Run Code Online (Sandbox Code Playgroud)
我宁愿自己发布这个,这样我就可以告诉你我不推荐使用它。
| 归档时间: |
|
| 查看次数: |
1515 次 |
| 最近记录: |