【发布时间】:2021-08-02 08:23:47
【问题描述】:
我有一个如下所示的数据框:
>>> 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']])
但我在解决这个问题时遇到了一些问题。 感谢您的帮助!
【问题讨论】:
-
使用
bfill1 andffill`,通常比combine_first 快:df.replace({"NaN": np.nan}).bfill(axis=1).ffill(axis=1).iloc[:, 0] -
@sammywemmy 请不要以 cmets 的身份发布答案
-
如果您认为问题被错误地关闭,请随时发表评论。
标签: python pandas merging-data