回答編集履歴
2
コメント追加
answer
CHANGED
@@ -70,13 +70,23 @@
|
|
70
70
|
|
71
71
|
```
|
72
72
|
|
73
|
-
とあり、ignoring NaNsと言うことでNaNは敢えて無視しています。
|
73
|
+
とあり、ignoring NaNsと言うことでNaNは敢えて無視しています。
|
74
74
|
|
75
|
+
_get_valuesではmaskと言う入力したaと同じサイズの行列を作り、NaNに対してはTrueそれ以外はFalseをセットし、最後にnp.putmaskでmaskがTrueの要素は強制的に0にした値をnansumに返しています。Numpyにputmaskなんて関数があったんですね。知りませんでした。これでほぼ動作が全て解明されました。
|
76
|
+
|
75
77
|
```Python3
|
78
|
+
np.putmask(values, mask, fill_value)
|
79
|
+
```
|
80
|
+
|
81
|
+
ところでskipnaがデフォルトでTrueなのでFalseにすればNaNが返るらしいことが分かりましたので。試してみた結果
|
82
|
+
|
83
|
+
```Python3
|
76
84
|
print(a.sum(skipna=False))
|
77
85
|
|
78
86
|
A NaN
|
79
87
|
B 5.0
|
80
88
|
C NaN
|
81
89
|
dtype: float64
|
82
|
-
```
|
90
|
+
```
|
91
|
+
|
92
|
+
以上ご参考まで。
|
1
コメント追加
answer
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
既に回答は上がっていますし、sum()のドキュメントにも記述があるようですが、僕はちゃんと理由を突き止めたいので、ソースをいつも確認します。
|
2
|
+
|
1
3
|
PyCharmなどIDEを使っていれば、.sum()の定義へ簡単に飛べますので、答えにたどり着くまで探します。(バイナリのモジュールにたどり着いてソースが不明なこともありますが)
|
2
4
|
|
3
5
|
|
@@ -5,7 +7,7 @@
|
|
5
7
|
print(a.sum())
|
6
8
|
```
|
7
9
|
|
8
|
-
のsum()は
|
10
|
+
のsum()は関数を作る関数で定義されてる様子。
|
9
11
|
|
10
12
|
```Python3
|
11
13
|
# pandas/core/generic.py
|