Python开发遇到的一些问题
阅读原文时间:2023年07月05日阅读:1

1.SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

原因:python中的“变量”其实是一个“标签”,而不是一个“容器”。“链式索引”(chained indexing)而引起的错误或警告!

解决警告的方案:
在截取数据的语句后加一个.copy()复制一份数据给df就可以了。
使用 DafaFrameming.loc[行名, 列名] = 值 的方式去赋值, 而不是使用DataFrame[]的形式去赋值。

如果要更改原始数据,请使用单一赋值操作(loc):
如果想要一个副本,请确保强制让 Pandas 创建副本(.copy()):
强烈不推荐直接关闭警告

2.ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

两个比较的数,数据类型不匹配

  df.astype(int)强制类型转换
  df.JAN_STOCK.apply(Decimal)
  Decimal(df.get("JAN_STOCK").get(i))
  df1 = df2.apply(pd.to_numeric(), errors = 'ignore') 转换成适当数值类型,遇到错误忽略不转换该列

3.'str' object has no attribute 'apply'

采取该方式转换类型:Decimal(df.get("JAN_STOCK").get(i))