我有一個CSV文件,其中第一行是日期,第一列是扇區。像這樣的東西。解析csv文件,將列更改爲行和列,並將其更改爲列
Date,7/2/2007,7/3/2007,7/5/2007,7/6/2007,7/9/2007
A,0,1,3,2,0
AA,23,423,2,0,0
AAL,34,23,5,0,234
AGCG,234,0,9,234,23
XL,0,65,34,34,34
所以現在我要準備另一個文件,這就好比
Date,Sector
7/2/2007,AA
7/2/2007,AAL
7/2/2007,AGCG
7/3/2007,A
7/3/2007,AA
7/3/2007,AAL
7/3/2007,XL
...
背後的邏輯是,我想在每個日期,其不爲0
代碼,我已經試過部門到目前爲止: 從集合中導入csv,sys import defaultdict
dd = defaultdict(list)
dateList = []
header = False
def createFile(di):
ff = open("cum_file.csv","w")
csvwriter = csv.writer(ff)
row = []
for d,t in di.iteritems():
for tt in t:
print tt,d
row = [tt,d]
csvwriter.writerow(row)
del row[:]
#with open("./data/StrategyAcctValue-Daily.csv") as f:
with open("./try/test.csv") as f:
reader = csv.reader(f,delimiter=",")
for line in reader:
col1 = True
if header:
#sys.exit()
for eachCol in line:
if col1:
col1 = False
tkr = eachCol
elif eachCol != '0':
tkrIndex = line.index(eachCol)
tickerDate = dateList[tkrIndex - 1]
dd[tickerDate].append(tkr)
else:
continue
#print dd
#createFile(dd)
#sys.exit()
else:
header = True
for eachCol in line:
# print line.index(eachCol)
# continue
if col1:
col1 = False
tkr = eachCol
else:
dd[eachCol] = []
dateList.append(eachCol)
print dateList
print dd
createFile(dd)
這是給輸出,如:
A 7/3/2007
AA 7/3/2007
AAL 7/3/2007
XL 7/3/2007
A 7/6/2007
AAL 7/9/2007
AGCG 7/9/2007
AA 7/2/2007
AAL 7/2/2007
AGCG 7/2/2007
AGCG 7/2/2007
A 7/5/2007
AA 7/5/2007
AAL 7/5/2007
AGCG 7/5/2007
XL 7/5/2007
XL 7/5/2007
XL 7/5/2007
我無法找到,在那裏我做了錯誤。
謝謝你的工作! – ggupta
@ggupta樂於提供幫助。 –