折叠 pandas 数据框中的重叠列

Collapse overlapping coloums in pandas dataframe

我有一个如下所示的数据框:

>>> df = pd.DataFrame({'P1':['ARF5','NaN','NaN'],'P2':['NaN','M6PR','NaN'],'P3':['NaN','NaN','NDUFAF7']})
>>> df
     P1    P2       P3
0  ARF5   NaN      NaN
1   NaN  M6PR      NaN
2   NaN   NaN  NDUFAF7

我一直在尝试将其折叠成这样:

     C1
0  ARF5  
1  M6PR
2  NDUFAF7

所有列都有重叠,但我不知道重叠的程度。我也不知道在任何迭代中这个 df 中会有多少列,因为它是我需要从中汇总输出的管道的一部分。

我认为原则上我需要 combine_first 的功能,但对于列。 我试过这样的事情:

df['condensed'] = reduce(lambda x,y:x.combine_first(y),[df[:]])

df['condensed'] = reduce(lambda x,y:x.combine_first(y),[df['P1'],df['P2'],df['P3']])

但我在解决这个问题时遇到了一些问题。 感谢您的帮助!

axis=1 上使用 bfill:

df['C1'] = df.replace('NaN', np.nan).bfill(axis=1)['P1']
>>> df

     P1    P2       P3       C1
0  ARF5   NaN      NaN     ARF5
1   NaN  M6PR      NaN     M6PR
2   NaN   NaN  NDUFAF7  NDUFAF7