如何将未知列数的Pandas DataFrame非空行合并为单列
解决Pandas DataFrame多列非空值合并为单列的方法
最简实现代码
针对你生成的comb_df,一行代码就能完成需求:
result_df = comb_df.stack().reset_index(drop=True).to_frame(name='0')
代码逻辑说明
stack():把DataFrame的列维度转为行维度,自动过滤所有null值,将所有非空元素按原有顺序堆叠成一个Seriesreset_index(drop=True):移除堆叠后生成的多级索引,只保留纯值序列to_frame(name='0'):将Series转为单列DataFrame,指定列名为0,和你期望的结果格式完全匹配
备选实现方式
如果更习惯用melt方法,也可以这样写:
result_df = comb_df.melt(value_name='0')['0'].dropna().reset_index(drop=True).to_frame()
melt():把所有列的内容汇聚到一列中(列名设为0)dropna():过滤掉所有空值- 后续的
reset_index和to_frame作用和第一种方法一致
效果验证
用你提供的示例DataFrame测试,两种方法都会自动跳过全空行和单个空值,只保留非空的列表元素,输出完全符合你期望的单列结果。
内容的提问来源于stack exchange,提问作者fstr
相关产品推荐
相关产品推荐

