如何在不修改DataFrame索引的前提下将所有值替换为0,可否用lambda实现
Pandas DataFrame全量值替换为0的实现方案
高性能实现方法
最简单且效率最高的方式是直接对DataFrame全切片赋值,该操作完全保留原有索引、列名结构,不会修改DataFrame的骨架信息:
import pandas as pd import numpy as np # 示例数据构造 df = pd.DataFrame({'A':np.random.randint(10, size= 10), 'B':np.random.randint(10, size= 10), 'C':np.random.randint(10, size= 10), 'D':np.random.randint(10, size= 10)}) # 全量值替换为0,直接修改原对象 df[:] = 0
如果不想修改原始DataFrame,可以先拷贝再操作:
df_new = df.copy() df_new[:] = 0
也可以通过显式构造新DataFrame的方式实现,手动指定原有索引和列名:
df = pd.DataFrame(0, index=df.index, columns=df.columns)
是否可以用lambda函数实现
可以实现,借助逐元素遍历的方法调用lambda即可,代码如下:
# pandas 2.1及以上版本推荐使用map df = df.map(lambda x: 0) # 旧版本pandas使用applymap df = df.applymap(lambda x: 0)
注意:该方案需要遍历所有单元格执行逻辑,性能远低于直接赋值方案,仅适合小数据量场景使用,大数据量处理优先选择直接切片赋值的方法。
内容的提问来源于stack exchange,提问作者Raj Nair
相关产品推荐
相关产品推荐

