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

如何在Pandas中为含指定字符串的列替换NaN为0

解决DataFrame指定列的NaN替换问题

问题分析

你的DataFrame列名是带时间后缀的incount - XX:XX,直接用df['incount']无法匹配列名,需要通过列名包含指定字符串筛选目标列,再替换其中的NaN为0。

注意事项

你的示例数据中用的是字符串'NaN',不是pandas默认的np.nan,需要先将其转为真正的缺失值(如果实际数据已经是np.nan可跳过此步骤)。

解决方案

方法一:筛选列名后批量替换

import pandas as pd
import numpy as np

# 构造示例数据
d = {'incount - 14:00': [1,'NaN', 1,1,'NaN','NaN','NaN','NaN',1],
     'incount - 15:00': [2,1,2,'NaN','NaN','NaN',1,4,'NaN'],
     'outcount - 14:00':[2,'NaN',1,1,1,1,2,2,1],
     'outcount - 15:00':[2,2,1,1,'NaN',2,'NaN',1,1]}
df = pd.DataFrame(data=d)

# 转换字符串'NaN'为np.nan(实际数据若为np.nan可省略)
df = df.replace('NaN', np.nan)

# 筛选列名包含'incount'的列
incount_cols = df.columns[df.columns.str.contains('incount')]
# 对目标列替换NaN为0
df[incount_cols] = df[incount_cols].fillna(0)

方法二:字典推导式+assign更新

如果你喜欢更简洁的链式写法,可以用字典推导式生成需要更新的列,通过assign方法修改DataFrame:

# 同样先处理字符串'NaN'(若需要)
df = df.replace('NaN', np.nan)

# 批量更新目标列
df = df.assign(**{col: df[col].fillna(0) for col in df.columns if 'incount' in col})

效果验证

执行后,所有列名含incount的列中的缺失值会被替换为0,outcount相关列的缺失值保持原样。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 10:50:37