【问题标题】:Error: 'float' object is not subscriptable错误:“浮动”对象不可下标
【发布时间】: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


【解决方案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"]

【讨论】:

  • 给出错误--raise IndexError("single positional indexer is out-of-bounds")
【解决方案2】:

由于您只想检查值是否为字符串,因此(并且作为浮点数永远不能是 "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),因此您需要更正切片以包含正确的四个字符。

【讨论】:

  • 解决方案是使用 try 和 except 块。感谢您宝贵的 cmets。
猜你喜欢
  • 1970-01-01
  • 2013-11-28
  • 1970-01-01
  • 2023-03-21
  • 2023-03-08
  • 1970-01-01
  • 2012-04-04
  • 2012-01-03
相关资源
最近更新 更多