错误:“浮动”对象不可下标

时间:2020-05-15 12:06:49

标签: python

请帮助我解决此错误:

“ float”对象不可下标。

错误出现在if instru[6:9] =="HDFC":行中 工具列包含方案名称

df=pd.read_excel(filename,sheet_name=fund,skiprows=[0,1,2,3,4],usecols=[2,3,5,6,7,8])

df.columns=["instruments","isin","industry_rating","qty","mktval","pct"]
index = 0
check = 0

for instru in df["instruments"]:
    if instru[6:9] =="HDFC":
        check = 1 
        break
    index += 1

if check == 1:
    print(index)

df.iloc[[index],[1,2,3]] = ["Additional","Additional",1]

print(df.iloc[index])

2 个答案:

答案 0 :(得分:1)

index = 0
check = 0

for instru in df["instruments"]:
    if str(instru)[6:9] =="HDFC":
        check = 1 
        break
    index += 1

instru是浮点型的,因此将其强制转换为字符串。 str(instru)[6:9]仅返回3个字符,因此请提供df["instruments"]

答案 1 :(得分:0)

由于您只想检查值是否为字符串,所以(并且作为浮点数永远不能为"HDFC"),而不是将所有内容都强制转换为str,您只需检查instru是否为字符串比较之前先进行字符串比较。您可以使用isinstance命令来做到这一点。

for instru in df["instruments"]:
    if isinstance(instru, string) and instru[6:9] =="HDFC":
        check = 1 
        break
    index += 1

请记住,instru[6:9]仅返回3个字符(不包括位置9),因此您需要更正切片以包含正确的四个字符。