【问题标题】:How can I average values from two dataframes (same index) into one df, with conditions on missing values NaN?如何在缺失值 NaN 的条件下将两个数据帧(相同索引)的值平均到一个 df 中?
【发布时间】:2017-05-09 10:29:30
【问题描述】:

我使用两个数据框(一个来自 1981 年至今的降雨数据,另一个来自 2002 年至今的植被指数数据)。

pR:

MonthDekad            01d1        01d2       01d3       02d1       02d2  \
AdminCode Year                                                            
2688      1981    2.702703    2.702703   2.702703   2.702703   2.702703   
          1982   16.216216   21.621622  18.918919  32.432432  54.054054   
          ...........   
          2016   0.166331     0.318759   0.431364   0.492916   0.632023   
          2017  -0.492916    -0.431364        NaN        NaN        NaN

和 pV:

MonthDekad          01d1      01d2      01d3      02d1      02d2  \
AdminCode Year                                                               
2688      2002       NaN       NaN       NaN       NaN       NaN        
          2003  0.477121  0.477121  0.477121  0.477121  0.477121       
          ............ 
          2016       NaN  0.636822  0.000000  0.000000  0.000000 
          2017 -0.636822 -0.636822       NaN       NaN       NaN  

两者的索引方式相同(多索引,level0 = admincode 用于本地化,level1 用于年份),并且列是当年的 dekads。

我需要将它们组合成一个数据框,通过

  • 平均同一个索引位置对应的2个值,只有两个值都是数字时,
  • 否则(如果两者之一缺失/NaN),最终值应该是未缺失的值(例如:对于 1981 年到 2002 年,只有降雨量值)。
  • 当然,如果两者都是 NaN,它也会是 NaN。

我被第二个条件阻止了。到目前为止,我只是想到了

pRV = pR.add(pV, fill_value=0)

然后我除以 2,但是当只添加一个值时会出现问题,因为它也会除以它......知道如何解决这个问题吗?

【问题讨论】:

标签: python pandas


【解决方案1】:

首先连接 2 个 DF,然后按所有索引分组。最后取每个键的平均值。

pd.concat([pR,pV]).groupby(level=[0,1]).mean()

【讨论】:

  • 不用担心。如果您觉得有帮助,请点赞并接受其中一个答案。
猜你喜欢
  • 1970-01-01
  • 2014-09-04
  • 2023-03-23
  • 1970-01-01
  • 2017-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
相关资源
最近更新 更多