如何使用Pandas的loc改写代码,消除DataFrame切片赋值警告
消除Pandas切片赋值警告的.loc改写方法
原代码的链式索引操作(先取列再过滤行)会触发Pandas的副本赋值警告,因为这种操作可能无意中修改的是原DataFrame的副本而非本身。
用.loc直接定位行和列进行赋值就能解决这个问题,推荐两种写法:
写法1:直接在.loc中写入索引条件
ce.loc[ce["Trade_type"] == "CE Buy", "Buy_Price"] = ce.loc[ce["Trade_type"] == "CE Buy", "Trade_price"]
写法2:先定义布尔掩码(更清晰,适合复杂过滤场景)
# 提前定义过滤条件 mask = ce["Trade_type"] == "CE Buy" # 通过.loc定位目标行和列完成赋值 ce.loc[mask, "Buy_Price"] = ce.loc[mask, "Trade_price"]
核心逻辑是通过.loc[row_indexer, col_indexer]的形式,直接对原DataFrame的指定行和列进行赋值操作,避免链式索引带来的副本歧义,彻底消除警告。
内容的提问来源于stack exchange,提问作者Arunava Datta
相关产品推荐
相关产品推荐

