【发布时间】:2020-05-15 12:06:49
【问题描述】:
请帮我解决这个错误:
'float' 对象不可下标。
错误出现在if instru[6:9] =="HDFC":
Instruments 列包含方案名称
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])
【问题讨论】:
-
你能把你的代码写成可读的格式吗?
-
instru显然是一个浮点数。即使它是一个字符串,instru[6:9]也只会返回 3 个字符,所以它永远不会等于HDFC -
@SidouMahmoud 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"] df=df[['instruments','industry_rating','isin','qty ','mktval','pct']] df['date']=date1 print(df.columns) 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]打印(df.iloc[索引])
-
@DavidBuck 你能告诉我解决方案吗?我在某处看到了相同的代码,但它在那里工作正常。仪器类型为熊猫系列对象。
-
首先,请edit您的问题添加其他信息,因为它在 cmets 中基本上是不可读的。其次,只需检查
df["instruments"]并确保它包含您认为应该包含的内容。如果它主要是偶尔浮动的字符串,你必须在你的代码中处理它。
标签: python