Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 合并起始行中的多个csv_Python_Pandas - Fatal编程技术网

Python 合并起始行中的多个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.

我想知道我是否可以合并多个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:]:

但是,如果您想进行更多的修改,您应该使用普通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)