我正在尝试从文件中提取一列,以便将其放入字典中,然后将其转换为数据框,我已经尝试了这段代码,但是没有用:
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
请你帮我一下!谢谢
答案 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()