我使用两个数据框(一个是从 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 = 本地化的管理代码,level1 代表年份),并且列是年份的十位数。
我需要将它们组合成一个数据帧,通过
- 对同一索引位置对应的 2 个值求平均值,前提是这两个值都是数字,
- 否则(如果两者之一缺失/NaN),最终值应为未缺失的值(例如:1981 年至 2002 年,仅降雨量值)。
- 当然,如果两者都是 NaN,那么它也将是 NaN。
我被第二个条件阻止了。到目前为止,我只想到
pRV = pR.add(pV, fill_value=0)
然后我除以 2,但是当只添加一个值时就会出现问题,因为它也会除以它......知道如何解决这个问题吗?
最佳答案
首先连接 2 个 DF,然后按所有索引进行分组。最后取每个键的平均值。
pd.concat([pR,pV]).groupby(level=[0,1]).mean()
关于python - 如何在缺失值 NaN 的条件下将两个数据帧(相同索引)中的值平均到一个 df 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43867385/