我有两个数据框,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
如果DataFrames
都绝对一致,你可以使用set_index
,stack
并且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] 删除。
我来说两句