合并两个数据框并减少列数

mHelpMe

我有两个数据框,df_dates,df_ratios。两个数据框的尺寸均相同,为150 x4。两个数据框均具有一列,该列为安全ID,并且在两个数据框中该列均相同。

df_dates
id     col1       col2       col3        col4
1sds   nan        nan        20200108    nan
bhu6   20190404   nan        nan         nan
lm55   nan        nan        20200623    20201215
bn34   nan        nan        nan         nan


df_ratios
id     col1       col2       col3        col4
1sds   nan        nan        1.34        nan
bhu6   2.6        nan        nan         nan
lm55   nan        nan        0.23        0.45
bn34   nan        nan        nan         nan

我需要的如下所示。基本上,在df_dates中有一个日期的地方,在df_ratios中将有一个对应的数字,我想将它们对齐并忽略所有nan。我知道如何解决此问题的唯一方法是简单地遍历数据帧中的每一行和每一列并应用一些简单的逻辑。我想知道熊猫是否有更有效的方法?

df_result
id     dates      ratios
1sds   20200108   1.34
bhu6   20190404   2.6
lm55   20200623   0.23        
lm55   20201215   0.45       
克里斯·A

如果DataFrames都绝对一致,你可以使用set_indexstack并且concat

(pd.concat([df_dates.set_index('id').stack().rename('dates'),
            df_ratios.set_index('id').stack().rename('ratios')], axis=1)
 .reset_index(level=0).reset_index(drop=True))

[出]

     id       dates  ratios
0  1sds  20200108.0    1.34
1  bhu6  20190404.0    2.60
2  lm55  20200623.0    0.23
3  lm55  20201215.0    0.45

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章