Python使用pandas如何按顺序合并多列为单列并剔除NaN值
实现方案
你可以使用pandas的concat方法按指定列顺序拼接非空值完成需求,完整代码如下:
1. 依赖导入与测试数据构造(已有DataFrame可跳过该步骤)
import pandas as pd import numpy as np # 构造示例DataFrame df = pd.DataFrame([ ['A', 'E', 'I'], ['B', 'F', 'J'], ['C', 'G', 'K'], [np.nan, 'H', 'L'], ['D', np.nan, np.nan] ], columns=['Col1', 'Col2', 'Col3'])
2. 核心处理逻辑
# 按Col1→Col2→Col3的顺序提取各列非空值,拼接为新DataFrame new_df = pd.concat( [df['Col1'].dropna(), df['Col2'].dropna(), df['Col3'].dropna()], ignore_index=True ).to_frame(name='New Col')
如果需要按现有列顺序批量处理全部列,可使用通用写法:
new_df = pd.concat( [df[col].dropna() for col in df.columns], ignore_index=True ).to_frame(name='New Col')
输出new_df即可得到你需要的结果。
内容的提问来源于stack exchange,提问作者sof.
相关产品推荐
相关产品推荐

