簡體   English   中英

Pandas:nansum系列到DataFrame的每一列

[英]Pandas: nansum Series to each column of DataFrame

我想將一個系列加到一個DataFrame的每一列上,具有相同的nansum行為:如果一個組件丟失,則返回另一個; 如果兩者都丟失則返回NaN / 0。

測試用例:

import numpy as np
import pandas as pd

df = pd.DataFrame([[np.nan, 1], [2, 2], [3, 4]])
ts = pd.Series([1, np.nan, 4])

嘗試1(當缺少一個時給出nan):

df.add(ts, axis=0)

Out[115]: 
     0    1
0  NaN  2.0
1  NaN  NaN
2  7.0  8.0

嘗試2(拋出錯誤):

df.add(ts, axis=0, fill_value=0)
NotImplementedError: fill_value 0 not supported.

預期產出:

   0  1
0  1  2
1  2  2
2  7  8

注意:我可以通過保存NaN的位置來做到這一點,用NaN填充為0並且當兩者都是NaN時設置為NaN,但我正在尋找更好的解決方案。

除了None之外的任何東西的fill_value仍在開發中,但截至目前,你必須解決這個問題。 執行添加,然后計算掩碼以在需要時恢復NaN

r = df.fillna(0).add(ts.fillna(0), axis=0)

m = df.isnull().__and__(ts.isnull(), axis=0).values
v = r.values
v[m] = np.nan

r[:] = v 
r
     0    1
0  1.0  2.0
1  2.0  2.0
2  7.0  8.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM