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

如何用同行user字段值加1替换DataFrame中的NaN值?

替换Pandas DataFrame指定位置NaN值的实现方案

需求场景

原始DataFrame数据如下:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'user': [1.0, 4.0, 1.0],
    'days_unseen': [2.0, 5.0, np.nan]
})

需要将索引2位置的days_unseen列NaN值,替换为该行user字段的值加1,最终得到:

user  days_unseen
0   1.0          2.0
1   4.0          5.0
2   1.0          2.0

具体实现方法

方法1:直接定位索引修改(最简洁)

针对单个指定位置的修改,直接通过loc定位赋值即可:

df.loc[2, 'days_unseen'] = df.loc[2, 'user'] + 1

方法2:布尔索引批量处理(扩展性强)

如果需要同时处理多个符合条件的行,可通过布尔索引筛选后批量赋值:

# 筛选条件:索引为2 且 days_unseen为NaN
mask = (df.index == 2) & df['days_unseen'].isna()
df.loc[mask, 'days_unseen'] = df.loc[mask, 'user'] + 1

后续若要修改其他索引,只需调整df.index == 2的条件即可(比如改成df.index.isin([2,5])处理多个索引)。

方法3:apply逐行处理(适配复杂逻辑)

如果有更复杂的行级判断逻辑,可使用apply函数逐行处理:

def process_row(row):
    if row.name == 2 and pd.isna(row['days_unseen']):
        return row['user'] + 1
    return row['days_unseen']

df['days_unseen'] = df.apply(process_row, axis=1)

验证结果

执行任意一种方法后,打印DataFrame即可得到目标结果:

print(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:30:51