如何将Pandas DataFrame多列值纵向拼接并去除NaN值
实现方案
两种写法都可以得到你要的结果,取值顺序均为先列a的非空值、后列b的非空值,和需求一致:
方法1:用stack()实现(代码最简洁)
stack()纵向展开多列数据时会默认自动丢弃NaN值,不需要额外做空值处理:
# 已有df的话直接运行这行即可得到结果 result = pd.DataFrame({'c': df[['a', 'b']].stack().reset_index(drop=True)})
方法2:显式拼接后去空(逻辑更易读)
手动按顺序拼接两列数据,再删除空值重置索引,逻辑更直白:
result = pd.DataFrame({ 'c': pd.concat([df['a'], df['b']], ignore_index=True).dropna() }).reset_index(drop=True)
输出验证
运行上述任意一段代码,得到的结果如下,完全匹配预期:
| c |
|---|
| 10 |
| 20 |
| 30 |
| 4 |
| 5 |
| 6 |
内容的提问来源于stack exchange,提问作者Prateek Sinha
相关产品推荐
相关产品推荐

