Python 合并起始行中的多个csv
我想知道我是否可以合并多个CSV,但必须从给定的行开始,并在第一列中添加文件名。目前,我一直在使用以下代码:Python 合并起始行中的多个csv,python,pandas,Python,Pandas,我想知道我是否可以合并多个CSV,但必须从给定的行开始,并在第一列中添加文件名。目前,我一直在使用以下代码: import os import glob import pandas as pd os.chdir(Path) extension = 'csv' all_filenames = [i for i in glob.glob('*.{}'.format(extension))] #combine all files in the list combined_csv = pd.
import os
import glob
import pandas as pd
os.chdir(Path)
extension = 'csv'
all_filenames = [i for i in glob.glob('*.{}'.format(extension))]
#combine all files in the list
combined_csv = pd.concat([pd.read_csv(f) for f in all_filenames ])
#export to csv
combined_csv.to_csv( "combined.csv", index=False, encoding='utf-8-sig')
现在我正在处理一些格式不好的文件,我需要从第3行开始连接,并在第一列中添加文件名,但不确定如何实现这一点。首先,你不需要glob.glob的列表理解-它仍然返回一个列表
对于仅从第3行开始连接所有文件的请求-这应该相当简单。只需在read_csv命令中添加一个.loc[3:]:
但是,如果您想进行更多的修改,您应该使用普通for循环,以可读的方式完成所有事情,然后再对所有事情进行处理,例如:
mydfs = []
for f in all_filenames:
df = pd.read_csv(f).loc[3:]
df['filename'] = f
mydfs.append(df)
combined_csv = pd.concat(mydfs)
mydfs = []
for f in all_filenames:
df = pd.read_csv(f).loc[3:]
df['filename'] = f
mydfs.append(df)
combined_csv = pd.concat(mydfs)