【问题标题】:fixing list out of range修复列表超出范围
【发布时间】:2019-03-04 14:25:04
【问题描述】:

我正在尝试从文件中提取一列以将其放入字典中,然后将其转换为数据框,我已尝试过此代码,但它不起作用:

filename ="C:\\Users\Amin Chaari\Desktop\drugs.csv"

with open (filename, encoding="utf8") as f:
datas = csv.reader(f, delimiter = '\t')

lines = [row for row in datas]
R={}
for i in range(0,5):
 print(lines[0][i])
 if lines[0][i] != 'userID':
    if lines[0][i] !='drugName':
        grouped_column = []
        for j,row in enumerate(lines):
            if j>0:
                grouped_column.append(row[i])
                R.update({lines[0][i]:grouped_column})
print(R)
df3=pd.DataFrame(R)

这是我得到的错误:

Traceback (most recent call last):

File "<ipython-input-116-d9d691dce427>", line 9, in <module>
grouped_column.append(row[i])

IndexError: list index out of range

你能帮帮我吗!谢谢

【问题讨论】:

  • 该消息应该是不言自明的,您的行(row 变量)似乎不够长。 print(row) 的输出是什么,放在导致错误的行之前?什么是lines,它来自哪里,它的内容是什么?

标签: python dataframe


【解决方案1】:

一种“修复”的简单方法是:

R = {}
for i in range(0, 5):
  print(lines[0][i])
  if lines[0][i] != 'userID':
    if lines[0][i] !='drugName':
      grouped_column = []
      for j, row in enumerate(lines):
        try:
          if j > 0:
            grouped_column.append(row[i])
            R.update({lines[0][i]:grouped_column})
        except IndexError:
          pass

print(R)
df3 = pd.DataFrame(R)

这更像是解决您的问题而不是解决方案。您应该调试并查看问题所在。但问题是你的row[i] 不存在,如果你在这里发布整个代码或行中的值会更好。

编辑

此代码将比较并检查该行是否包含需要使用的大小,不区分大小写将忽略该部分:

import csv
import pandas as pd

FILE = "drugs.csv"

def main():

  with open (FILE, encoding="utf8") as f:
    datas = csv.reader(f, delimiter = '\t')
    lines = [row for row in datas]

  R = {}

  for i in range(len(lines[0])):
    if lines[0][i] != 'userID' and lines[0][i] !='drugName':
      grouped_column = []

      for j, row in enumerate(lines):
        if j > 0 and len(row) > i:
          grouped_column.append(row[i])
          R.update({lines[0][i]:grouped_column})

  df3 = pd.DataFrame.from_dict(R, orient="index")
  df3.transpose()


if __name__ == "__main__":
  main()

【讨论】:

猜你喜欢
  • 2016-10-19
  • 2019-09-15
  • 1970-01-01
  • 1970-01-01
  • 2019-10-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-01
相关资源
最近更新 更多