【发布时间】:2018-05-15 22:35:43
【问题描述】:
我有两个像这里这样的 DataFrame:
df1 =
sent token token2
0 a b
0 a c
0 b d
1 g h
1 h k
1 h i
1 g i
1 g k
df2 =
sent token token2 rel
0 a b A
1 g h B
1 k g C
现在我想将这两个 DataFrame 合并为一个,如下所示:
df_new =
sent token token2 rel
0 a b A
0 a c NaN
0 b d NaN
1 g h B
1 h k NaN
1 h i NaN
1 g i NaN
1 g k C
但是像这样合并 DataFrames
df_new = df1.merge(df2, on=["sent","token","token2"], how="left")
我得到了我想要的输出,除了 ["rel"] 标记是错误的
df_new =
sent token token2 rel
0 a b A
0 a c NaN
0 b d NaN
1 g h B
1 h k NaN
1 h i NaN
1 g i NaN
1 g k NaN
这是由于df1 中令牌的顺序。由于["rel"] 中的值取决于["token1"] -> ["token2"],因此在颠倒顺序时无法应用其值。有没有办法在合并过程中做到这一点而不创建df1的新版本?
【问题讨论】:
-
不,您必须对 df1 或 df2 进行某种操作才能获得所需的结果,merge 中没有参数可以让您更改合并键。
-
是的,我必须改进我的
df1以包含 token 和 token2 的所有可能组合。
标签: python pandas dataframe merge