如何堆叠Pandas DataFrame并替换NaN值?
Pandas DataFrame 数据整合与NaN替换解决方案
实现思路
把重复的Name行合并,保留每个Name对应的Final非空值,将Alpha的不同取值转为列并匹配Two的内容,最后替换所有NaN值。
分步代码实现
- 提取每个Name的Final非空值
按Name分组,提取Final列的第一个有效非空值:
final_df = df.groupby('Name')['Final'].first().reset_index()
- 将Alpha-Two的键值对转为宽表
用pivot方法把Alpha的取值转为列,对应填充Two的数据:
alpha_two_df = df.pivot(index='Name', columns='Alpha', values='Two').reset_index() alpha_two_df.columns.name = None # 移除列索引名称,让结果更简洁
- 合并数据并替换NaN
将两个结果按Name合并,用空字符串替换所有NaN值:
result = pd.merge(final_df, alpha_two_df, on='Name', how='left').fillna('')
最终输出结果
执行代码后得到的DataFrame如下:
Name Final X Y Z 0 James foo 1234 5678 1 John too abdc efgh 2 Johh efgh
内容的提问来源于stack exchange,提问作者Larry Burholme
相关产品推荐
相关产品推荐

