将列表元素添加到空列表

时间:2014-11-30 00:44:33

标签: python list

我试图获取在循环中创建的列表的第一个元素,并将其添加到空列表中。

容易对吗?但是我的代码没有用......

空列表为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

2 个答案:

答案 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)

原因:

文件末尾有空行。在本地转载。