【发布时间】:2018-08-06 11:02:51
【问题描述】:
df1
1 2 3 4
101 1 C 22.6253
101 2 O -32.7148
101 3 N 119.0569
101 4 H 26.8502
101 5 C 126.1352
df2
num1 type name num2 first
101 N VAL 101 N
101 H VAL 101 H
101 CA VAL 101 C
101 HA VAL 101 H
我想将两者合并并获得以下输出 - 将 df2 中的 first 与 df1 中的 3 匹配:
结果
1 2 3 4 type name
101 1 C 22.6253 NAN NAN
101 2 O -32.7148 NAN NAN
101 3 N 119.0569 N VAL
101 4 H 26.8502 H VAL
101 5 C 126.1352 CA VAL
我正在使用:
merge = df1.merge(df2, left_on='3', right_on='first', how='outer')
成功匹配 3 和第一个,但它不是按顺序进行的,只是重复所有其他列中的值。为什么会这样,我该如何解决?
1 2 3 4 num1 type name num2 first
101 1 C 22.6253 101 CA VAL 101 C
101 1 C 22.6253 101 CB VAL 101 C
101 1 C 22.6253 101 CG1 VAL 101 C
101 1 C 22.6253 101 CG2 VAL 101 C
101 1 C 22.6253 101 C VAL 101 C
101 1 C 22.6253 102 CA SER 102 C
【问题讨论】:
-
在您的结果表中,这是如何出现的 101 1 C 22.6253 NAN NAN ?无法理解这种行为。
-
类型列中的“CG1”值从何而来?在您的输入中没有提到任何地方