[英]Combine multiple csv from a starting row
我想知道是否可以合並多個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.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:]
:
combined_csv = pd.concat([pd.read_csv(f).loc[3:] for f in all_filenames ])
但是,如果要進行更多修改,則應使用常規的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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.