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

pandas将指定多列字符串替换为1并新增行计数汇总列的实现方法

实现方案

首先确认列索引规则:pandas的列索引默认从0开始计数,如果你要操作的是自然顺序第22~65列,用df.iloc[:, 21:65]即可选中对应范围(iloc切片为左闭右开规则,截止值设为65刚好包含索引为64的第65列)。

情况1:无需修改原有疾病列内容,仅新增计数列

对应你给出的示例输出效果,不需要改动原列数据,一行代码即可完成:

# 统计指定列中非空值的数量,赋值给新增列
df['Total_diseases'] = df.iloc[:, 21:65].notna().sum(axis=1)

情况2:需要将指定列中非NA的疾病文本标记为1

如果要同时完成值替换和计数需求,代码如下:

# 非NA值替换为1,保留原NA值
df.iloc[:, 21:65] = df.iloc[:, 21:65].where(df.iloc[:, 21:65].isna(), 1)
# 逐行统计1的数量
df['Total_diseases'] = df.iloc[:, 21:65].sum(axis=1)

如果你的目标列中存在非空但不属于疾病文本的内容,需要精准匹配疾病规则再替换,比如所有疾病文本都包含disease关键词,可使用如下代码:

# 仅将匹配disease关键词的非空值替换为1,其余值保持不变
df.iloc[:, 21:65] = df.iloc[:, 21:65].apply(
    lambda col: col.map(lambda x: 1 if isinstance(x, str) and 'disease' in x.lower() else x)
)
# 统计每行符合要求的疾病数量
df['Total_diseases'] = df.iloc[:, 21:65].eq(1).sum(axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:39:03