【发布时间】:2017-02-21 20:51:38
【问题描述】:
我有一个 CSV 文件,我需要以特定模式循环遍历特定列,并将输出模式存储在具有相同名称 +“_pattern”+ [1、2、3 等] 的新文件中+ .csv。
这是搜索模式:遍历第 1 列并找到相同的 # 并抓取它们,然后遍历抓取列表的第 2 列,然后在第 2 列中抓取所有具有相同日期的内容,然后转到第 4 列并抓取所有不一样的#s,然后使用第 1 列、第 2 列和第 4 列中的模式创建一个文件,按列时间组织。
例子:
1 2 time 4
13.45 9/29/2016 6:00 98765
12.56 9/29/2016 6:05 76548
13.45 9/29/2016 6:07 98764
13.45 9/29/2016 6:21 98766
13.45 9/29/2016 6:20 96765
12.56 9/29/2016 6:06 76553
结果是,file_pattern_1.csv 会:
1. 13.45 9/29/2016 6:00 98765
2. 13.45 9/29/2016 6:07 98764
3. 13.45 9/29/2016 6:21 98766
但不包括:
4. 13.45 9/29/2016 6:20 96765
由于第 4 列与前一个条目重复,因此 file_pattern_2.csv 将具有:
1. 12.56 9/29/2016 6:05 76548
2. 12.56 9/29/2016 6:06 76553
这是我到目前为止所拥有的,但我已经迷失了循环逻辑:
import os
infile = raw_input("Which file are we working with? ")
assert os.path.exists(infile), "Path is incorrect."
os.chdir(infile)
def createFile(csvFile, fileName):
with open (fileName, 'wb') as ftext:
ftext.write(csvFile)
def appendFile(csvFile, fileName):
with open (fileName, 'a') as ftext:
ftext.write(csvFile)
def setfilename(tread):
fileName = tread[0:tread.index('.')] + '_patterns' + str(countItem) + '.csv'
return fileName
for i in pcolumn:
if pcolumn == pcolumn:
return pfile
for x in date:
if date == date:
return date
for a in acolumn:
if acolumn != acolumn:
createFile(fileName)
else:
print "Finished."
【问题讨论】:
-
使用 pandas 包。
df[['col1','col2','col4']].drop_duplicates()将有助于消除重复项,然后遍历df.groupby('col1')以转储文件 -
在您的示例中,您的所有第 4 列条目都是唯一的?
-
@MartinEvans 没错;第 4 列的条目都是 unquie。