我正在尝试从数据集中获取一列并将其设置为变量。数据集有多列,但我需要的是“ ID”列。
如果您在下面查看我的代码,将会看到我正在使用tkinter创建一个应用程序,并要求用户上传数据集(其中将包含“ ID”列)。然后,代码将读取文件并提取“ ID”列。给我错误的行是:
ids = int(data['ID'])
该错误告诉我序列(或列)必须全部为整数值,而不是字符串,这就是为什么我使用'int()'函数的原因,但它仍然给我这个错误:>
TypeError: byte indices must be integers or slices, not str
这是我的代码:
import tkinter as tk
import delete as dl
import pandas as pd
root= tk.Tk()
canvas1 = tk.Canvas(root, width = 300, height = 300)
canvas1.pack()
from tkinter import filedialog
file = filedialog.askopenfile(parent=root,mode='rb',title='Choose a file')
if file != None:
data = file.read()
ids = int(data['ID'])
file.close()
答案 0 :(得分:0)
如果data['ID']
是具有data
键的字典,则调用'ID'
将返回一些内容,但是data = file.read()
返回一个字符串(或字节)对象。
数据集上载为什么格式?如果它是文本/ csv文件,则可以使用csv.DictReader
(更多信息请访问https://docs.python.org/3.7/library/csv.html)。
答案 1 :(得分:0)
@ahanson赚了钱。
我不确定'.read()'的工作方式,但是似乎可以将文件作为字节对象打开。相反,我使用pd.read_excel()进行了切换,并且可以正常工作。
有效的新代码:
import tkinter as tk
import delete as dl
import pandas as pd
root= tk.Tk()
canvas1 = tk.Canvas(root, width = 300, height = 300)
canvas1.pack()
from tkinter import filedialog
file = filedialog.askopenfile(parent=root,mode='rb',title='Choose a file')
if file != None:
data = pandas.read_excel(file)
ids = data['ID']