Skip to main content
 首页 » 编程设计

python之如何合并多个 Pandas 数据框列

2025年05月04日20del

我有一个类似于下图的数据框。

In[2]: df = pd.DataFrame({'P1': [1, 2, None, None, None, None],'P2': [None, None, 3, 4, None, None],'P3': [None, None, None, None, 5, 6]}) 
Out[2]:  
    P1   P2   P3 
0  1.0  NaN  NaN 
1  2.0  NaN  NaN 
2  NaN  3.0  NaN 
3  NaN  4.0  NaN 
4  NaN  NaN  5.0 
5  NaN  NaN  6.0 

我正在尝试将所有列合并到新数据框中的单个 P 列中(见下文)。

     P 
0  1.0 
1  2.0 
2  3.0 
3  4.0 
4  5.0 
5  6.0 

在我的实际代码中,我有一个应该合并的任意列列表,不一定是 P1、P2 和 P3( 1 到 5 列之间)。我尝试了以下几行:

new_series = pd.Series() 
desired_columns = ['P1', 'P2', 'P3'] 
for col in desired_columns: 
    other_series=df[col] 
    new_series = new_series.align(other_series) 

然而,这会产生一个 Series 对象的元组,而且它们似乎都不包含我需要的数据。我可以遍历每一行,然后检查每一列,但我觉得我可能缺少一个简单的 pandas 解决方案。

请您参考如下方法:

如果每行只有一个非 None 值向前填充 None 并按位置选择最后一列:

df['P'] = df[['P1', 'P2', 'P3']].ffill(axis=1).iloc[:, -1] 
print (df) 
    P1   P2   P3    P 
0  1.0  NaN  NaN  1.0 
1  2.0  NaN  NaN  2.0 
2  NaN  3.0  NaN  3.0 
3  NaN  4.0  NaN  4.0 
4  NaN  NaN  5.0  5.0 
5  NaN  NaN  6.0  6.0