我正在使用下面的代码来合并两个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)
1条答案
按热度按时间bttbmeg01#
看起来
1stcolumn
在一个文件中被转换为int
,而在另一个文件中被转换为str
。在merge
上不会出现任何错误,因为您正在将列转换为字符串,但我认为为时已晚。请尝试在加载数据时执行此操作,不要让Pandas推断数据类型:在前面的代码中,如果注解掉使用
astype
的两行,则merge
操作将引发如下异常:如果您的数据是'01',' 02','03',Pandas将尝试转换为
int64
并将值转换为1,2,3,但由于未知原因,其他文件的情况并非如此。