如何修复此类型错误?
Posted
技术标签:
【中文标题】如何修复此类型错误?【英文标题】:How can I fix this Type Error? 【发布时间】:2018-07-27 02:08:47 【问题描述】:当我尝试执行这个函数时,我得到一个类型错误
for i, value in enumerate(line_score):
print(i, value)
if (value["GAME_SEQUENCE"] != game_sequence):
game_sequence += 1
TypeError:字符串索引必须是整数
line_sccore 的值为
GAME_DATE_EST GAME_SEQUENCE GAME_ID TEAM_ID
0 2018-02-15T00:00:00 1 0021700865 1610612743
1 2018-02-15T00:00:00 1 0021700865 1610612749
2 2018-02-15T00:00:00 2 0021700866 1610612747
3 2018-02-15T00:00:00 2 0021700866 1610612750
print(i, value)
给出 0 GAME_DATE_EST
【问题讨论】:
感谢@DyZ,我该如何解决这个问题?? 你认为value["GAME_SEQUENCE"]
是什么意思?如果value
是一个字符串,那么这是无效的,正如错误消息所说,你想做什么?
如果value
是一个字符串“GAME_DATE_EST”,你为什么期望value["GAME_SEQUENCE"]
可以工作?
@DyZ 那么我该如何检查 game_sequence 呢?
line_score
的类型是什么?它可能是熊猫数据框吗? game_sequence
的类型和值是什么?
【参考方案1】:
value['game-sequence'] 引用了被称为'value'的字典,显然'value'不是你想象的字典,而是一个字符串,实际上你可以引用字符串中的字符像列表一样,需要整数
【讨论】:
【参考方案2】:我假设您想计算 game_sequence 中的游戏数量,而 game_sequence 是一个简单的变量?
我使用了你提供的这个数据集。
line_score = pd.DataFrame("GAME_DATA_EST":["2018-02-15T00:00:00","2018-02-15T00:00:00","2018-02-15T00:00:00","2018-02-15T00:00:00"],
"GAME_SEQUENCE":[1,1,2,2],
"GAME_ID":["0021700865","0021700865","0021700866","0021700866"],
"TEAM_ID":[1610612743,1610612749 ,1610612747,1610612750])
如果 GAME_SEQUENCE 的值(在您的数据集中)不同,此代码会为 game_sequence 添加 +1。
game_sequence = 0
for i, value in enumerate(line_score["GAME_SEQUENCE"]):
#print(i, value)
if (value != game_sequence):
game_sequence += 1
# Alternative solution
game_sequence = 0
for i, value in enumerate(line_score):
#print(i, value)
if (line_score["GAME_SEQUENCE"][i] != game_sequence):
game_sequence += 1
如果你的意思不同,请告诉我。
【讨论】:
以上是关于如何修复此类型错误?的主要内容,如果未能解决你的问题,请参考以下文章
如何修复此错误:未捕获(承诺)类型错误:无法读取未定义的属性(读取“长度”)
如何修复此错误未处理的异常:类型“字符串”不是“索引”类型“int”的子类型
如何修复此错误类型“_InternalLinkedHashMap<String, dynamic>”不是“FutureOr<List<dynamic>>”类型的子类