使用 glob 写入多个 csv

Posted

技术标签:

【中文标题】使用 glob 写入多个 csv【英文标题】:Write to multiple csv using glob 【发布时间】:2019-05-02 07:09:24 【问题描述】:

我正在处理大量 csv 文件,需要添加列。我试过glob,例如:

import glob

filenames = sorted(glob.glob('./DATA1/*2018*.csv'))
filenames = filenames[0:10]

import numpy as np
import pandas as pd

for f in filenames:
    df = pd.read_csv(f, header=None, index_col=None)
    df.columns = ['Date','Signal','Data','Code']
 #this is what I should add to all csv files   
    df["ID"] = df["Data"].str.slice(0,2) 

在将列添加到每个 csv 文件后,我需要一种方法将文件保存回具有不同名称的 csv(未连接),例如“file01edited.csv”。

【问题讨论】:

【参考方案1】:

使用to_csvf-strings 更改文件名:

for f in filenames:
    df = pd.read_csv(f, names=['Date','Signal','Data','Code'], index_col=None)
 #this is what I should add to all csv files   
    df["ID"] = df["Data"].str.slice(0,2) 
    #python 3.6+
    df.to_csv(f'f[:-4]edited.csv', index=False)
    #python bellow 3.6
    #df.to_csv('edited.csv'.format(f[:-4]), index=False)

【讨论】:

尝试了这些,但不断出现错误:长度不匹配:预期轴有 5 个元素,新值有 4 个元素。我可以知道 f[:-4] 代表什么吗? @npm - 它从文件名中删除 .csv - file01.csvfile01 然后为 file01edited.csv 添加 edited.csv @npm - 但您的错误意味着某个文件中有 5 列,因此 df.columns = ['Date','Signal','Data','Code']names=['Date','Signal','Data','Code'] 失败

以上是关于使用 glob 写入多个 csv的主要内容,如果未能解决你的问题,请参考以下文章

如何使用多个字典写入 csv?

将多个结果写入 CSV [重复]

使用 R 将多个数据帧写入 .csv 文件

Python:使用多个标题行写入 CSV

将多个列表写入 csv Python

使用 glob 读取多个 CSV 导致顺序错误 [重复]