如何解决我打开了许多 csv 文件,现在我需要将这些文件的名称添加到
我在文件夹中有很多 csv 文件,名称如 XCV123.csv XCF456.csv、DFT456.csv 等。我打开它们并另存为一个,但我看到没有这些文件的名称.csv DF 如下所示(当然一个 csv 有很多行):
A B C
1 2 3
5 2 3
6 5 2
所以我要找的是这样的 DF 或 CSV
A B C Name
1 2 3 XCV123
5 2 3 XCF456
6 5 2 DFT456
我用代码打开了这个:
import pandas as pd
from glob import glob
with open('/opt/home/main.csv','a') as singleFile:
for csv in glob('*.csv'):
if csv == 'main.csv':
pass
else:
for line in open(csv,'r'):
singleFile.write(line)
但我必须在此代码中添加一些内容,我不知道是什么...感谢您的帮助!
最好的问候
解决方法
我在这里假设:
- 您所有的 csv 文件都具有相同的标题
- 您所有的 csv 文件都有相同的分隔符:逗号
- 您可以在 csv 文件中使用带引号的字段
- 您可以在每次运行时删除文件
然后,您可以将代码更改为:
# use mode wb to control end of lines and overwrite the output file
with open('/opt/home/main.csv','wb') as singleFile:
do_header = True # add 1! header
for csv in glob('*.csv'):
if csv == 'main.csv':
pass
else:
with open(csv,'rb') as file:
line = next(file)
if do_header: # only on first pass
singlefile.write(line.rstrip() + b',Name\r\n')
do_header = False
for line in file:
singlefile.write(line.rstrip() + ',"{}"\r\n'.format(csv).encode())
singleFile.write(line)
,
使用 pandas
和 pathlib
您可以在 pathlib 对象上使用 .stem
来返回不带扩展名的文件名。
import pandas as pd
from pathlib import Path
files = Path('/to/csv/files').glob('*.csv') #rglob if you have sub directories.
dfs = pd.concat([pd.read_csv(file).assign(Name=file.stem) for file in files])
dfs.to_csv('singleFile.csv',index=False)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。