能否基于DataFrame上方行的值填充行?实现类Excel VLOOKUP功能
基于DataFrame上方行值填充缺失内容的方法
你可以通过构建Code与Name/Value的映射关系实现类似Excel VLOOKUP的填充效果,具体步骤如下:
1. 构造示例DataFrame
先将你给出的示例数据转换为pandas的DataFrame:
import pandas as pd data = { 'Code': [1, 2, 1, 2], 'Name': ['Fred', 'Gary', None, None], 'Value': [2, 2, None, None] } df = pd.DataFrame(data)
2. 创建映射表并填充缺失值
从已有完整数据的行中提取Code对应的Name和Value,生成映射关系,再用这个映射表填充缺失单元格:
# 提取有完整匹配关系的行,以Code为索引 mapping = df.dropna().set_index('Code')[['Name', 'Value']] # 通过Code匹配映射表,填充Name和Value的缺失值 df['Name'] = df['Code'].map(mapping['Name']) df['Value'] = df['Code'].map(mapping['Value'])
最终效果
填充后的DataFrame如下:
Code Name Value 0 1 Fred 2.0 1 2 Gary 2.0 2 1 Fred 2.0 3 2 Gary 2.0
补充说明
如果DataFrame中同一Code对应多组不同值,可先通过drop_duplicates('Code')确保每个Code只保留一组匹配值:
mapping = df.dropna().drop_duplicates('Code').set_index('Code')[['Name', 'Value']]
内容的提问来源于stack exchange,提问作者Lucas
相关产品推荐
相关产品推荐

