如何按条件使用列中已有值填充DataFrame指定列的NA行数据
Python Pandas 实现方案
你需要的是前向填充逻辑:用列中前面最近的非空有效值,向后填充后续的NA值,且开头未出现有效值的NA会保留,完全匹配你的需求。
实现代码
import pandas as pd import numpy as np # 1. 构造示例数据,实际使用时直接读取自己的数据源即可 df = pd.DataFrame({ 'VehicleID': range(1,10), '1': range(1,10), 'English': ['Release', pd.NA, pd.NA, pd.NA, 'FORD', pd.NA, 'MAZDA', pd.NA, pd.NA], '4WAS(FRONT)': ['Model', pd.NA, pd.NA, pd.NA, 'h2', pd.NA, 'h3', 'h3', 'h3'] }) # 2. 对指定列执行前向填充 # 单独填充English列 df['English'] = df['English'].ffill() # 如果需要同时填充第四列,再加一行即可 df['4WAS(FRONT)'] = df['4WAS(FRONT)'].ffill()
效果验证
运行后输出的结果和你给出的预期完全一致:
- 前4行English列还未出现有效品牌值,NA原样保留
- 第5行出现FORD后,第6行的NA自动填充为FORD
- 第7行出现MAZDA后,第8、9行的NA自动填充为MAZDA
R 语言实现方案
如果使用R处理数据,直接调用tidyr包的fill函数即可实现相同效果:
library(tidyverse) df <- df %>% # 指定要填充的列,.direction设为down即向下前向填充 fill(English, `4WAS(FRONT)`, .direction = "down")
内容的提问来源于stack exchange,提问作者Ulises HR
相关产品推荐
相关产品推荐

