我有两个数据帧df1
:
group value
g1 A
g1 B
g1 C
g1 D
g2 B
g2 C
g2 E
g3 A
g3 D
g3 E
g4 B
g4 D
...
和df2
:
value1 value2
A B
A C
B C
B D
...
我想通过合并列df1
与df2
和value
来合并value1
和value2
,即:
group value1 value2
g1 A B
g1 A C
g1 B C
g2 B C
g1 B D
g4 B D
...
如图所示,group
仅在两个值同时对应于value1
中的同一组的情况下,才显示两个列value2
和df1
。
df = df1.merge(df2, left_on='value', right_on='value1', how='inner')
df = df.merge(df2, left_on='value', right_on='value2', how='inner')
df = df.drop(['value'], axis=1)
问题是,我的实际数据帧df1
和df2
很大,每次我尝试运行代码时,会话都崩溃了(更不用说,不确定我的代码是否正确首先)。
有什么主意如何优化此过程(并确认我的方法是否正确)?
答案 0 :(得分:2)
第二次合并需要什么?还不够吗?
df = df1.merge(df2, how='inner', left_on=['value'], right_on=['value1']).drop(columns=['value'])
print(df)
group value1 value2
0 g1 A B
1 g1 A C
2 g3 A B
3 g3 A C
4 g1 B C
5 g1 B D
6 g2 B C
7 g2 B D
8 g4 B C
9 g4 B D