折叠 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
我有一个如下所示的数据框:
>>> 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