我想在Pandas中將另一個數據框除以另一個數據框,以最終表示百分比變化。這兩個數據幀值都包含NaN和0.現在,當我將一個數據幀除以另一個數據幀時,兩個數據幀的值爲零的結果是NaN。我知道爲什麼0/0被設爲np.nan,但是從百分比變化的角度來看,我需要0/0爲0如何在Python熊貓中使零歸零?
什麼是完成這一任務的乾淨的方式?
重現問題:
import pandas as pd
import numpy as np
data_with_zeros = pd.DataFrame({'a': [2, np.nan, 0, 3], 'b': [np.nan, 2, 0, 6]})
data_with_zeros['a'].div(data_with_zeros['b'], fill_value=0)
結果:
0 inf
1 0.0
2 NaN
3 0.5
dtype: float64
不會增加一個'fillna(0)'在最終會給你想要的結果,因爲'a'中的所有非零值會在'b'遇到零值時變成+/-'np.inf'? –
不,這會導致缺少a和b值的值也設置爲0。這些值應該保持爲NaN。 – Niels