如何使用pandas根据另一列的部分内容高效修改指定列的值
原有代码问题
- 逻辑错误:循环中判断时间符合条件时,直接对整个
VALUE列赋值30,会导致所有行的VALUE都被修改,无法实现仅修改对应行的需求。 - 性能问题:Python层的逐行循环在处理千万级数据时,会产生极大的性能开销,耗时极长。
高效解决方案
直接使用pandas原生的向量化操作,底层由C实现,无需Python层循环,千万级数据也可在秒级完成处理,同时逻辑正确。
核心思路是通过布尔掩码筛选出符合条件的行,直接对指定列的对应行赋值。
实现代码
import pandas as pd df = pd.read_csv('file.csv') # 若TIME列非字符串类型,可先执行 df['TIME'] = df['TIME'].astype(str) 转换 df.loc[df['TIME'].str[:2] == '02', 'VALUE'] = 30 df.to_csv("file.csv", index=False)
内容的提问来源于stack exchange,提问作者yair_elmaliah
相关产品推荐
相关产品推荐

