我想要做的就是创建一个包含在表中的所有数据的新表1与另外一个名为列说明(值从表2)应该匹配部件号在表1。
我试过使用df.merge
但是,它只是使Table 3
超过三行。
我用于生产上述图像的代码,
pd.merge(xl_csv, xl_df, on="Part Number", how="left")[['Part Number', 'Occurrence Count', 'G1 TAT_x', 'Description']]
我想要做的就是创建一个包含在表中的所有数据的新表1与另外一个名为列说明(值从表2)应该匹配部件号在表1。
我试过使用df.merge
但是,它只是使Table 3
超过三行。
我用于生产上述图像的代码,
pd.merge(xl_csv, xl_df, on="Part Number", how="left")[['Part Number', 'Occurrence Count', 'G1 TAT_x', 'Description']]
看来需要LEFT JOIN,然后通过子集选择列,但首先需要通过drop_duplicates
在df2
删除重复:
cols = ['Part Num','Sample','Description']
df = pd.merge(df1, df2.drop_duplicates('Part Num'), on='Part Num', how='left')[cols]
print (df)
Part Num Sample Description
0 1 one Desc. one
1 2 two Desc. two
2 3 three Desc. three
map
的另一个解决方案:
df1['Description'] = df1['Part Num'].map(df2.drop_duplicates('Part Num')
.set_index('Part Num')['Description'])
print (df1)
Part Num Sample Description
0 1 one Desc. one
1 2 two Desc. two
2 3 three Desc. three
表2实际上有两个以上的列,但我只是想** **说明**。 –
查看我的更新,'merge'将**零件编号**展开成多行。 –
是的,你有重复的问题。所以需要冷杉删除它们。 – jezrael
我不知道指数是什么。 – piRSquared