问题描述
将900个csv读取成DataFrame进行Merge操作:
import pandas as pd
df_pri=pd.read_csv('C:/Users/38266/Desktop/t/csvFile/0.csv')
for i in range(1,900):
df=pd.read_csv('C:/Users/38266/Desktop/t/csvFile/'+str(i)+'.csv')
df_pri = pd.merge(df_pri, df, how='outer')
print(str(i))
df_pri.to_csv('result.csv',header=True,index=False)
出现以下错误:
问题分析
根据错误提示,应该其中有表格的某个或多个字段类型和其他表格的不一致,无法进行合并。所以,我们解决的思路是将所有值转换成一种类型。转换成什么类型呢?因为没有数值计算的需求,所以我们统一转换成str
类型。
解决办法
在读取csv时,使用read_csv
的dtype
参数,指定类型。
修改后代码:
import pandas as pd
df_pri=pd.read_csv('C:/Users/38266/Desktop/t/csvFile/0.csv',dtype='str')
for i in range(1,900):
df=pd.read_csv('C:/Users/38266/Desktop/t/csvFile/'+str(i)+'.csv',dtype='str')
df_pri = pd.merge(df_pri, df, how='outer')
print(str(i))
df_pri.to_csv('result.csv',header=True,index=False)
print('OK')
其他方法
[1]Pandas合并2个Dataframe报错:You are trying to merge on object and int64 columns.
[2]【Python数据清洗】使用merge合并2个Dataframe报错:You are trying to merge on object and int64