【发布时间】:2015-11-18 10:42:39
【问题描述】:
我正在寻找可以帮助我编写以下脚本的人。我正在尝试将一个月的 csv 文件连接到一个“主文件”中。这些文件真的很大,所以我希望在脚本中做一些事情来缩短它们。这是我遇到的问题:
- 文件不同,但标题相同。我不确定如何仅在第一个文件上获取标题。我使用 next(f) 来摆脱其余部分。
- 如何将“输出”目录添加为 output1.csv 的目标文件夹
- 最后,我一直在尝试使用 pandas——如何使用它们删除第 1、2、4 列以及第 90 列之后的所有内容。我也想知道如何在编写之前先将其设为数据框它到 csv- 我想在我写它之前在输出文件的末尾添加一些计算。
到目前为止,这是我的脚本,我使用文件的时间戳找到正确的月份 '201510' = 十月
import csv
import os
import sys
import pandas as pd
Source = r'F:\backup\finalized 2'
Output = r'F:\Tom\Python'
for root, dirs, files in os.walk((os.path.normpath(Source)), topdown=False):
for name in files:
if name.startswith('201510') and name.endswith('client.csv'):
print "Found", name
SourceFolder = os.path.join(root, name)
with open(SourceFolder + "", 'r') as f:
next(f)
for line in csv.reader(f, delimiter=','):
with open('output1.csv','ab') as fout:
wr = csv.writer(fout)
wr.writerow(line)
以下是我想添加到数据框/CSV 末尾的计算:
df['ten_avg'] = df.iloc[:, 30:50].sum(axis=1).astype('int64') / 20
df['twenty_avg'] = df.iloc[:, 30:70].sum(axis=1).astype('int64') / 40
【问题讨论】:
-
连接你不需要
csv.reader和csv.writer。你可以使用fout.write(f.read())