python - 从起始行合并多个 csv
问题描述
我想知道我是否可以组合多个 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 行开始连接所有文件的请求 - 这应该相当简单。只需在.loc[3:]
您的read_csv
命令中添加一个:
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)
推荐阅读
- git - 如何避免仅在 Docker 内部发生的“go get”“未知修订”问题?
- pandas - Sort_values Pandas 按索引排序?
- reactjs - 在 ReactJS 中以不同的函数获取返回的 API 结果
- python - 将比较运算符与它在代数上的工作方式联系起来
- r - 使用 long data.frame 或 ggplotly 的 R 交互式堆积面积图
- android - 无法修复 gradle 同步问题
- python - 如何在mysql中使用多索引以获得更好的性能也进入python
- android - 上传改造图像但返回空服务器响应
- html - 创建这种类型的网格
- excel - 使用一个中央 .xlsx 共享文件来存储数据