我有兩個不平衡的數據幀,並希望通過減去值來創建第三個值,以獲得它們之間的增量。以下是三個數據框的示例。我想拿CURRENT,減去相應的EXPECTED來獲得DELTA。這可以按預期工作,並且當CURRENT和EXPECTED中的值存在時,我會在DELTA中生成正確的結果。但是,當它們不存在時,我會在DELTA中獲得NaN。當我希望如下:在熊貓中減去兩個不平衡的數據幀
CURRENT
Region1 Region2
type1 5 3
type2 2 11
type3 7 1
EXPECTED
Region1 Region2
type1 15 1
type2 6 4
DELTA
Region1 Region2
type1 -10 2
type2 -4 7
type3 7 1
用我目前的代碼,DELTA中的type3行是NaN,NaN。
def get_delta(self, CURRENT, EXPECTED):
delta = CURRENT
delta['Region1'] = current[['Region1']] - \
expected[['Region1']]
delta['Region2'] = current[['Region2']] - \
expected[['Region2']]
return delta
我試着檢查delta.isnull()或delta.empty,但不起作用。實質上,我想將EXPECTED中的任何不存在的值視爲0,然後僅執行減法CURRENT - RESERVED以獲得DELTA。我想我可以用任何治療爲NaN 0做到這一點,或在丟失的行與行正確/預期指數爲0
填充我想:
new_df = pd.concat([CURRENT, EXPECTED], axis=1).fillna(0)
,然後從那裏減去,但是當我嘗試concat時,我得到一個錯誤「ValueError:shape mismatch:形狀(0,13)的值數組無法廣播到形狀的索引結果(1,13)」,所以不知道那裏發生了什麼。
謝謝!這正是我所需要的,並允許我從代碼中刪除整個delta函數。 – Aaron
不客氣 – jezrael