【发布时间】:2020-03-11 16:01:40
【问题描述】:
你好! 我想通过从每个文件中添加一列(在本例中称为“网格”列)将许多 CSV 文件(总数将在 120-150 左右波动)水平组合成一个 CSV 文件。所有这些文件都具有相同的列和行数(它们的构造相同)并存储在相同的目录中。我尝试过使用 CSV 模块和 pandas。我不想定义所有 120 个文件。我需要一个脚本来自动完成。我被困住了,我没有想法......
我想获取的一些输入 CSV 文件(数据)和 CSV 文件(合并): https://www.dropbox.com/transfer/AAAAAHClI5b6TPzcmW2dmuUBaX9zoSKYD1ZrFV87cFQIn3PARD9oiXQ
这就是我使用 CSV 模块时代码的样子:
import os
import glob
import csv
os.chdir('\csv_files_direction')
extension = 'csv'
files = [i for i in glob.glob('*.{}'.format(extension))]
out_merg = ('\merged_csv_file_direction')
with open(out_merg,'wt') as out:
writer = csv.writer(out)
for file in files:
with open(file) as csvfile:
data = csv.reader(csvfile, delimiter=';')
result = []
for row in data:
a = row[3] #column which I need
result.append(a)
使用此代码,我只接收来自最后一个 CSV 的值。其余的都不见了。因此,我希望目录中的每个 CSV 文件都有一个精确的列。
还有熊猫:
import os
import glob
import pandas as pd
import csv
os.chdir('\csv_files_direction')
extension = 'csv'
files = [i for i in glob.glob('*.{}'.format(extension))]
out_merg = ('\merged_csv_file_direction')
in_names = [pd.read_csv(f, delimiter=';', usecols = ['grid']) for f in files]
使用 pandas,我从所有 CSV 接收数据作为列表,可以使用例如 in_names[1] 进行导航。
我承认这是我第一次尝试 pandas,我不知道下一步该做什么。
我将非常感谢任何帮助! 提前致谢, 马特乌斯
【问题讨论】: