请帮助我解决此错误:
“ 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])
答案 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),因此您需要更正切片以包含正确的四个字符。