使用python在多列上合并2个csv文件

时间:2018-08-27 16:49:47

标签: python csv merge duplicates

我有2个CSV文件包含数千个数据。假设文件中的数据:

first.csv

filename | type | size
----------------------
A        | doc  |   8
A        | doc  |  10
B        | pdf  |   5

second.csv

filename | type | size
----------------------
A        | doc  |   8
A        | doc  |  10
C        | jpg  |   3

我需要基于多个列合并两个文件,即filenametype。从两个文件中的列size的合并表中添加两个新列。将其保存到新的csv文件中。因此,新表应为:

filename | type | size-1 | size-2
---------------------------------
A        | doc  |   8    |    8
A        | doc  |  10    |   10
B        | pdf  |   5    |    0
C        | jpg  |   0    |    3

我已经编写了代码:

ds1 = pd.read_csv('first.csv')
ds2 = pd.read_csv('second.csv')

data_merge = ds1.merge(ds2, on=['filename','type'],how='outer',suffixes=('-1','-2'))
data_merge.fillna(0, inplace=True)
data_merge = data_merge.reset_index(drop=True)
data_merge.to_csv('new.csv')

执行代码时,通过合并列A中的每个值,我得到了新表,该表的数据size重复了很多次。

filename | type | size-1 | size-2
---------------------------------
A        | doc  |   8    |    8
A        | doc  |   8    |   10
A        | doc  |  10    |    8
A        | doc  |  10    |   10
B        | pdf  |   5    |    0
C        | jpg  |   0    |    3

如何解决这个问题?谢谢。

0 个答案:

没有答案