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

如何根据另一列的取值为指定数据列按条件赋值

手动补全ccode列缺失值的实现方案

核心思路很简单:直接按country列的取值做条件定位,给匹配到的目标行的ccode列赋你需要的固定值就行,不需要复杂的插值逻辑。下面给两种最常用的数据分析环境下的实现代码:

Python(pandas)

首先复现你的示例数据集:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'country': ['USA', 'Canada', 'Jordan', 'India', 'China', 'Armenia', 'Pakistan'],
    'ccode': [2, 20, np.nan, 750, np.nan, 371, 770]
})
  • 单个值补全:直接用.loc定位赋值
# 匹配country为China的行,ccode赋值为710
df.loc[df['country'] == 'China', 'ccode'] = 710
# 另一个NA是Jordan,按你的需求替换成对应值即可,比如约旦的国家编码是625
df.loc[df['country'] == 'Jordan', 'ccode'] = 625
  • 批量补全:如果后续还有多个国家需要补值,可以用映射字典一次性处理,不用逐行写规则
# 所有需要手动匹配的国家-编码对都写在这个字典里
fill_map = {
    'China': 710,
    'Jordan': 625
}
# 仅对原ccode为缺失值、且country在映射表中的行做替换
df['ccode'] = df.apply(
    lambda row: fill_map[row['country']] if pd.isna(row['ccode']) and row['country'] in fill_map else row['ccode'],
    axis=1
)

R语言

先构造示例数据集:

df <- data.frame(
  country = c('USA', 'Canada', 'Jordan', 'India', 'China', 'Armenia', 'Pakistan'),
  ccode = c(2, 20, NA, 750, NA, 371, 770)
)
  • 基础R写法,直接条件索引赋值
# 补China的ccode为710
df$ccode[df$country == "China"] <- 710
# 补Jordan的ccode为625
df$ccode[df$country == "Jordan"] <- 625
  • 用dplyr的写法,多规则的时候可读性更好
library(dplyr)

df <- df %>%
  mutate(
    ccode = case_when(
      country == "China" ~ 710,
      country == "Jordan" ~ 625,
      # 其余行保留原有ccode值
      TRUE ~ ccode
    )
  )

注意点:匹配country取值时要和原始数据的大小写、前后空格完全一致,比如原始数据里是首字母大写的China,如果写匹配规则时写成全小写的china会匹配失败,导致赋值不生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 10:21:27