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

如何让DataFrame中同一site下的cat列值统一并填补NA?

嘿,这个需求在数据清洗里挺常见的!核心思路就是按site分组,然后用每组里存在的非NA的cat值来填充整个组的cat列——前提是每个site至少有一行的cat是有值的哈,如果有site全是NA的情况,咱们也可以额外处理。下面给你两种主流工具的实现方法:

使用Python pandas实现

首先确保你导入了pandas库:

import pandas as pd

接下来一行代码就能搞定核心逻辑:

# 按site分组,用每组第一个非NA的cat值填充整组
df['cat'] = df.groupby('site')['cat'].transform(lambda x: x.dropna().iloc[0])

补充:处理全NA的site

如果你的数据里存在某个site的cat全是NA的情况,可以给这些组设置一个默认值(比如'unknown'):

df['cat'] = df.groupby('site')['cat'].transform(
    lambda x: x.dropna().iloc[0] if not x.dropna().empty else 'unknown'
)
使用R tidyverse实现

先加载tidyverse包:

library(tidyverse)

用分组+突变的方式实现:

# 按site分组,取每组第一个非NA的cat值替换整组,最后取消分组
df <- df %>% 
  group_by(site) %>% 
  mutate(cat = first(na.omit(cat))) %>% 
  ungroup()

补充:处理全NA的site

同样,如果有全NA的site,咱们可以给个默认值:

df <- df %>% 
  group_by(site) %>% 
  mutate(cat = ifelse(all(is.na(cat)), 'unknown', first(na.omit(cat)))) %>% 
  ungroup()

举个简单例子,假设你的原始数据是这样:

sitecat
AX
ANA
BNA
BY
CNA

处理后就会变成:

sitecat
AX
AX
BY
BY
Cunknown

这样同一site的cat值就完全一致啦!

内容的提问来源于stack exchange,提问作者Mélissa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:41:33