簡體   English   中英

從起始行合並多個csv

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM