如何使用限制填充来自不同数据框的数据框 nan 值?

How can I ffill a datframe nan values from a diffrent dataframe with limit?

我正在尝试使用限制为 2 和来自另一个数据帧的值来填充数据帧。但是,当 运行 以下代码 DF1.fillna(value=DF2,method='ffill',axis=0,limit=2) 时,出现此错误 ValueError: Cannot specify both 'value' and 'method'. DF1 和 DF2 在形状、列和索引方面相同。

DF1

CompanyId 1/1/2018 1/1/2019 1/1/2020 1/1/2021
1 10 15 nan nan
2 12 16 nan 12
3 14 17 nan 13
4 nan 18 12 14
5 nan 18 13 nan
6 nan nan 14 nan

DF2

CompanyId 1/1/2018 1/1/2019 1/1/2020 1/1/2021
1 21 31 41 51
2 22 32 42 52
3 23 33 43 53
4 24 34 44 54
5 25 35 45 55
6 26 36 46 56

预期结果

CompanyId 1/1/2018 1/1/2019 1/1/2020 1/1/2021
1 10 15 nan nan
2 12 16 nan 12
3 14 17 nan 13
4 24 18 12 14
5 25 18 13 55
6 nan 36 14 56

提前致谢!

假设 df1df2 具有相同的索引和列,这是解决问题的一种方法:

limit=2 向前填充 df1,然后使用 isna 创建一个布尔掩码。现在,使用这个布尔掩码 mask df2 中的值,最后使用掩码数据帧 df2

填充 df1 中的 nan 值
df1.fillna(df2.mask(df1.ffill(limit=2).isna()))

   CompanyId  1/1/2018  1/1/2019  1/1/2020  1/1/2021
0          1      10.0      15.0       NaN       NaN
1          2      12.0      16.0       NaN      12.0
2          3      14.0      17.0       NaN      13.0
3          4      24.0      18.0      12.0      14.0
4          5      25.0      18.0      13.0      55.0
5          6       NaN      36.0      14.0      56.0