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

如何用Python填充DataFrame中Site列的NaN值为前一个有效站点字符串

解决DataFrame中Site列的NaN前向填充问题

嘿,这个场景我太熟悉了!用pandas的fillna方法搭配method='ffill'就能完美解决,完全不需要复杂的循环,而且效率超高,哪怕是超大的DataFrame也能轻松处理。

核心解决方案

直接对Site列执行前向填充操作就行,一行代码搞定:

df['Site'] = df['Site'].fillna(method='ffill')

具体示例验证

我们用你给出的示例数据来测试一下:

import pandas as pd
import numpy as np

# 构造你的示例DataFrame
df = pd.DataFrame({
    'Site': ['aa', np.nan, np.nan, 'bb', np.nan, 'cc', np.nan, np.nan, np.nan],
    'data1': [2, 5, 2, 5, 2, 5, 2, 2, 2],
    'data2': [3, 6, 3, 6, 3, 6, 3, 3, 3]
})

# 执行填充
df['Site'] = df['Site'].fillna(method='ffill')

# 查看结果
print(df)

运行后输出的结果就是你想要的:

Site  data1  data2
0   aa      2      3
1   aa      5      6
2   aa      2      3
3   bb      5      6
4   bb      2      3
5   cc      5      6
6   cc      2      3
7   cc      2      3
8   cc      2      3

额外说明

  • ffill是forward fill的缩写,作用就是把每一个NaN替换成它前面最近的非空值,完全匹配你的需求
  • 这个操作只会修改Site列,其他列的数据会原封不动保留
  • 如果你的DataFrame开头就有NaN(比如第一个站点标识缺失),可以先手动填充开头的值,或者搭配limit参数限制填充次数,不过你的示例里没有这种情况,暂时不用考虑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 18:53:13