固定清单超出范围

时间:2019-03-04 14:25:04

标签: python dataframe

我正在尝试从文件中提取一列,以便将其放入字典中,然后将其转换为数据框,我已经尝试了这段代码,但是没有用:

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

请你帮我一下!谢谢

1 个答案:

答案 0 :(得分:-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()