<p>我从您的示例数据中得到了一点不同的输出,最后一行和结尾的<code>3.rd</code>行合并正确,而且<code>left join</code>不通过合并列进行排序:</p>
<pre><code>data = pd.merge(survey,rel_attr, left_on = 'Choice', right_on = 'Type',how='left')
print (data)
ID CustomerType Choice ... Warranty Manufacture Type
0 1.0 Durability OEM ... 4.0 4.0 OEM
1 2.0 Price OEM ... 4.0 4.0 OEM
2 3.0 Durability OEM ... 4.0 4.0 OEM
3 4.0 Durability OEM ... 4.0 4.0 OEM
4 5.0 Durability OEM ... 4.0 4.0 OEM
5 6.0 ManufacturerCredibility OEM ... 4.0 4.0 OEM
6 7.0 Warranty OEM ... 4.0 4.0 OEM
7 8.0 ManufacturerCredibility OEM ... 4.0 4.0 OEM
8 9.0 Durability OEM ... 4.0 4.0 OEM
9 10.0 Price OEM ... 4.0 4.0 OEM
10 11.0 Durability TPN ... 1.0 1.0 TPN
11 12.0 Warranty OEM ... 4.0 4.0 OEM
12 13.0 Durability TPN ... 1.0 1.0 TPN
[13 rows x 8 columns]
</code></pre>
<p>如果排序似乎使用<code>inner join</code>(默认值):</p>
<pre><code>data = pd.merge(survey,rel_attr, left_on = 'Choice', right_on = 'Type')
#same as
#data = pd.merge(survey,rel_attr, left_on = 'Choice', right_on = 'Type',how='inner')
print (data)
ID CustomerType Choice ... Warranty Manufacture Type
0 1.0 Durability OEM ... 4.0 4.0 OEM
1 2.0 Price OEM ... 4.0 4.0 OEM
2 3.0 Durability OEM ... 4.0 4.0 OEM
3 4.0 Durability OEM ... 4.0 4.0 OEM
4 5.0 Durability OEM ... 4.0 4.0 OEM
5 6.0 ManufacturerCredibility OEM ... 4.0 4.0 OEM
6 7.0 Warranty OEM ... 4.0 4.0 OEM
7 8.0 ManufacturerCredibility OEM ... 4.0 4.0 OEM
8 9.0 Durability OEM ... 4.0 4.0 OEM
9 10.0 Price OEM ... 4.0 4.0 OEM
10 12.0 Warranty OEM ... 4.0 4.0 OEM
11 11.0 Durability TPN ... 1.0 1.0 TPN
12 13.0 Durability TPN ... 1.0 1.0 TPN
[13 rows x 8 columns]
</code></pre>