根据文本字段在熊猫数据框中合并CSV文件

时间:2019-12-12 13:12:57

标签: python pandas dataframe text merge

我有两个要使用以下代码合并到一个数据框中的csv文件:

import pandas as pd
df_1 = pd.read_csv('A.csv')
df_2 = pd.read_csv('B.csv')
df_3 = df_1.merge(df_2, on='Material_Number_ID', how='left')   

我试图用来在(Material_Number_ID)上合并它们的字段是一个12位数字,当我将其保存为csv时会转换为文本字段。这使我无法将该字段用作链接,因为它无法识别数字不同。

Dataframe A:
  Material_Number_ID   Material_Type
0        4.920000e+11  FINISHED GOODS
1        4.920000e+11  FINISHED GOODS

Dataframe B:
   Material_Number_ID    Merch_Org
0        4.920000e+11  ACCESSORIES

Output:  
 Material_Number_ID   Material_Type    Merch_Org
0        4.920000e+11  FINISHED GOODS  ACCESSORIES
1        4.920000e+11  FINISHED GOODS  ACCESSORIES

问题是第1行找不到匹配项,因为在原始编号的第12位数字,Material_Number_IDs不同。

预期输出为

 Material_Number_ID   Material_Type    Merch_Org
0        4.920000e+11  FINISHED GOODS  ACCESSORIES
1        4.920000e+11  FINISHED GOODS  NaN

我知道答案是通过某种方式更改材料编号id,但我不知道正确的方法。

谢谢!

1 个答案:

答案 0 :(得分:0)

从此thread,当您从csv导入时,pandas将数字读取为浮点数。如果使用以下代码将它们转换为int64,它将显示Material_Number_ID的所有数字。

df_1['Material_Number_ID'] = df_1['Material_Number_ID'].astype('int64')
df_2['Material_Number_ID'] = df_2['Material_Number_ID'].astype('int64')