使用 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_csv
和f-string
s 更改文件名:
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.csv
到 file01
然后为 file01edited.csv
添加 edited.csv
@npm - 但您的错误意味着某个文件中有 5 列,因此 df.columns = ['Date','Signal','Data','Code']
或 names=['Date','Signal','Data','Code']
失败以上是关于使用 glob 写入多个 csv的主要内容,如果未能解决你的问题,请参考以下文章