Python根据相同列合并多个csv文件

我的需求是合并五个csv,其中七个表格的第一列都是日期(表格中未命名),根据第一列的日期将六个csv文件合并到第一个csv文件的后面(列后面),自动去除了未匹配上的数据行。

例如:表1:

date a
2021-11-09 1
2021-11-10 1
2021-11-11 1

表2-4:

date b
2021-11-10 2
2021-11-11 2

运行程序,得到表为:

date a b
2021-11-10 1 2
2021-11-11 1 2

代码为:

import pandas as pd
import os
from functools import reduce

print(os.getcwd()) #打印出当前工作路径
df = pd.read_csv("C:\\Users\\hanhan\\PycharmProjects\\pythonProject\\0.csv",encoding = 'gb2312',dtype='str')
df.rename(columns={'Unnamed: 0':'date'}, inplace=True)
df1 = pd.read_csv("C:\\Users\\hanhan\\PycharmProjects\\pythonProject\\1.csv",encoding = 'gb2312',dtype='str')
df1.rename(columns={'Unnamed: 0':'date'}, inplace=True)
df2 = pd.read_csv("C:\\Users\\hanhan\\PycharmProjects\\pythonProject\\2.csv",encoding = 'gb2312',dtype='str')
df2.rename(columns={'Unnamed: 0':'date'}, inplace=True)
df3 = pd.read_csv("C:\\Users\\hanhan\\PycharmProjects\\pythonProject\\3.csv",encoding = 'gb2312',dtype='str')
df3.rename(columns={'Unnamed: 0':'date'}, inplace=True)
df4 = pd.read_csv("C:\\Users\\hanhan\\PycharmProjects\\pythonProject\\4.csv",encoding = 'gb2312',dtype='str')
df4.rename(columns={'Unnamed: 0':'date'}, inplace=True)

df=[df,df1,df2,df3,df4]
df_merge= reduce(lambda left,right: pd.merge(left,right,on=['date','date']), df)
df_merge.to_csv('all.csv',header=True,index=False)

其中:

df.rename(columns={'Unnamed: 0':'date'}, inplace=True)

是因为Unnamed: 0,也就是第一列本身文件中未命名,所以重命名为了date。

(下一个需求就是如何不去除未匹配上的数据行?)

你可能感兴趣的:(数据分析,python)