[英]Correlation of a Series to each column of a DataFrame in Pandas, vectorized
[英]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.