我试图获取在循环中创建的列表的第一个元素,并将其添加到空列表中。
容易对吗?但是我的代码没有用......
空列表为index
我从中提取数字的列表是data
import pandas as pd
import numpy as np
ff = open("/Users/me/Documents/ff_monthly.txt", "r")
data = list(ff)
f = []
index = []
for i in range (1, len(data)):
t = data[i].split()
index.append(int(t[0]))
for j in range(1, 5):
k = float(t[j])
f.append(k / 100)
n = len(f)
f1 = np.reshape(f,[n / 4, 4])
ff = pd.DataFrame(f1, index= index, columns = ['Mkt_Rf','SMB','HML','Rf'])
ff.to_pickle("ffMonthly.pickle")
print ff.head()
当我在循环中创建列表t
时,我已经检查过它是否正确创建。
len(t) = 5
print t[0] = 192607
print t = ['192607', '2.95', '-2.54', '-2.65', '0.22']
代码:
index.append(t[0])
它应该将列表t
的第一个元素添加到index
...正确吗?
然而,我收到此错误:
IndexError: list index out of range
我在这里缺少什么?
编辑:
发布上面的整个代码。
以下是" ff_monthly.txt"
的前几行 Mkt-RF SMB HML RF
192607 2.95 -2.54 -2.65 0.22
192608 2.64 -1.22 4.25 0.25
192609 0.37 -1.21 -0.39 0.23
192610 -3.24 -0.09 0.26 0.32
192611 2.55 -0.15 -0.54 0.31
192612 2.62 -0.13 -0.08 0.28
答案 0 :(得分:0)
检查txt文件中是否有空行。
因为"" .split()将返回一个空列表,该列表将失败t [0]
答案 1 :(得分:0)
快速而且uggly:
for i in range (1, len(data)):
t = data[i].split()
if t:
index.append(int(t[0]))
for j in range(1, 5):
k = float(t[j])
f.append(k / 100)
原因:
文件末尾有空行。在本地转载。