You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以另一DataFrame为行列参考保留目标DataFrame值并替换其余值

Pandas实现指定行列位置保留值的方案

方案1:小数据量易读实现

逻辑简单直观,适合数据量不大的场景:

# 复制原df结构,先将所有值初始化为目标替换字符串"NaN"
res = df.copy()
res.loc[:, :] = "NaN"

# 遍历需要保留的坐标点,回填原始值
for idx, col in df_cross.itertuples(index=False, name=None):
    res.loc[idx, col] = df.loc[idx, col]

print(res)

方案2:大数据量向量化实现

全程无循环,性能更高,适合数据规模较大的场景:

# 将需要保留的行列组合转换为MultiIndex格式
keep_points = pd.MultiIndex.from_frame(df_cross)
# 堆叠DataFrame为Series后做索引匹配,不符合要求的位置替换为"NaN"后再展开回DataFrame
res = df.stack().where(df.stack().index.isin(keep_points), "NaN").unstack()

print(res)

注意事项

如果实际使用中行列索引是计算生成的浮点数,可能存在精度误差导致匹配失败,建议提前把df的索引、列名以及df_cross的两列数据都用round()统一保留相同小数位后再执行上述操作。


内容的提问来源于stack exchange,提问作者Romero_91

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 17:45:05