【发布时间】:2019-11-14 21:18:25
【问题描述】:
我正在尝试将 CSV 文件合并到一个文件夹中来分析它们。另外,我想将每个文件的文件名附加为一列,以便找出哪些数据来自哪个文件。我看过类似的问题,但没有一个对我有用。
这是我正在使用的代码。此文件夹中有 24 个 CSV 文件,因为以后使用 cat 组合 CSV 文件很容易,所以即使是告诉我如何在每个文件中附加文件名的方法也是完美的。任何帮助都会很棒。
import pandas as pd
import os
import glob
import csv
path=r'/home/videept/Downloads/A_DeviceMotion_data/A_DeviceMotion_data/dws_1/'
with open('output.csv', 'w', newline='') as f_output:
csv_output = csv.writer(f_output)
for filename in glob.glob(os.path.join(path,"*.csv")):
with open(filename, newline='') as f_input:
csv_input = csv.reader(f_input)
for row in csv_input:
row.insert(0, filename)
csv_output.writerow(row)
当我这样做时,单元格进入无限循环,甚至没有创建新文件。我不确定我如何才能看到正在发生的事情的进展,所以任何关于这方面的想法也会很棒。谢谢:)
【问题讨论】:
-
我会在
with open(filename, newline='')...行之前添加一个print("Processing", filename, "...),以确定一个文件是否阻止了所有内容。如果还不够,我还会每 n 行添加一个跟踪,例如:for i,row in enumerate(csv_input): if (0 == i%n): print('.', end='') ... -
使用
print()查看变量中的内容 - 即。filename和row -
它们是单列 CSV 文件吗?你用的是什么版本的python?
-
感谢 Serge,这帮助我找出了卡住的地方。欣赏它:)
标签: python pandas csv dataframe glob