如何到合并csv文件列开始与01,02,03 ....到100

qyzbxkaa  于 2023-01-15  发布在  其他
关注(0)|答案(1)|浏览(174)

我正在使用下面的代码来合并两个csv文件,但在两个文件'第一列'包含数字开始与01,02,03 ...直到100,但当试图合并两个文件,其合并从10,1112 ...直到100。为什么01到09行没有得到合并。如何合并这一整行从01到100可以有人告诉我。

import pandas as pd

data1 = pd.read_csv('1stfile.csv')
data2 = pd.read_csv('2ndfile.csv')

print(data1)

data1['1stcolumn'] = data1['1stcolumn'].astype(str)
data2['1stcolumn'] = data2['1stcolumn'].astype(str)

output1 = pd.merge(data1, data2, on='1stcolumn', how='inner')
print(output1)

output1.to_csv('finalfile.csv', index=False, header=False)
bttbmeg0

bttbmeg01#

看起来1stcolumn在一个文件中被转换为int,而在另一个文件中被转换为str。在merge上不会出现任何错误,因为您正在将列转换为字符串,但我认为为时已晚。请尝试在加载数据时执行此操作,不要让Pandas推断数据类型:

data1 = pd.read_csv('1stfile.csv', dtype={'1stcolumn': str})
data2 = pd.read_csv('2ndfile.csv', dtype={'1stcolumn': str})

在前面的代码中,如果注解掉使用astype的两行,则merge操作将引发如下异常:

ValueError: You are trying to merge on object and int64 columns. If you wish to proceed you should use pd.concat

如果您的数据是'01',' 02','03',Pandas将尝试转换为int64并将值转换为1,2,3,但由于未知原因,其他文件的情况并非如此。

相关问题