Tom*_*Tom 4 python dataframe pandas
设置新数据框列的值:
df.loc[df["Measure] == metric.label, "source_data_url"] = metric.source_data_url
Run Code Online (Sandbox Code Playgroud)
现在(从 Pandas 版本 2.1.0 开始)给出警告,
FutureWarning:
Setting an item of incompatible dtype is deprecated and will raise in a future error of pandas. Value ' metric_3' has dtype incompatible with float64, please explicitly cast to a compatible dtype
first.
Run Code Online (Sandbox Code Playgroud)
Pandas文档讨论了如何解决 Series 的问题,但不清楚如何在分配新的 DataFrame 列时迭代地执行此操作(上面的行在指标循环中调用,它是发出警告的最终指标) 。如何才能做到这一点?
我有同样的问题。我的直觉是,当您第一次为该列设置值时source_data_url,该列尚不存在,因此 pandas 创建一个列source_data_url并将值分配NaN给它的所有元素。这使得 Pandas 认为该列dtype是float64。然后它会发出此警告。
我的解决方案是在向其添加值之前创建具有某些默认值(例如空字符串)的列:
df["source_data_url"] = ""
或者None似乎也有效:
df["source_data_url"] = None