gpt4 book ai didi

python - Pandas 为什么 int64 - float64 列减法产生 NaN

转载 作者:行者123 更新时间:2023-11-28 18:33:47 25 4
gpt4 key购买 nike

我对 pandas 减两列的结果感到困惑。当我减去两个 float64 和 int64 列时,它会产生几个 NaN 条目。为什么会这样?这种奇怪行为的原因可能是什么?

Final Updae: 正如 N.Wouda 所指出的,我的问题是索引列不匹配。

Y_predd.reset_index(drop=True,inplace=True)
Y_train_2.reset_index(drop=True,inplace=True)

解决了我的问题

更新 2:我的索引列似乎不匹配,这是有道理的,因为它们都是从相同的数据中采样的。如何使用新的索引列“重新开始”?

更新:Y_predd- Y_train_2.astype('float64') 也产生 NaN 值。我很困惑为什么这没有引发错误。它们大小相同。为什么这会产生 NaN?

In [48]: Y_predd.size
Out[48]: 182527

In [49]: Y_train_2.astype('float64').size
Out[49]: 182527

错误的原始文档:

In [38]: Y_train_2
Out[38]:
66419 0
2319 0
114195 0
217532 0
131687 0
144024 0
94055 0
143479 0
143124 0
49910 0
109278 0
215905 1
127311 0
150365 0
117866 0
28702 0
168111 0
64625 0
207180 0
14555 0
179268 0
22021 1
120169 0
218769 0
259754 0
188296 1
63503 1
175104 0
218261 0
35453 0
..
112048 0
97294 0
68569 0
60333 0
184119 1
57632 0
153729 1
155353 0
114979 1
180634 0
42842 0
99979 0
243728 0
203679 0
244381 0
55646 0
35557 0
148977 0
164008 0
53227 1
219863 0
4625 0
155759 0
232463 0
167807 0
123638 0
230463 1
198219 0
128459 1
53911 0
Name: objective_for_classifier, dtype: int64

In [39]: Y_predd
Out[39]:
0 0.00
1 0.48
2 0.04
3 0.00
4 0.48
5 0.58
6 0.00
7 0.00
8 0.02
9 0.06
10 0.22
11 0.32
12 0.12
13 0.26
14 0.18
15 0.18
16 0.28
17 0.30
18 0.52
19 0.32
20 0.38
21 0.00
22 0.02
23 0.00
24 0.22
25 0.64
26 0.30
27 0.76
28 0.10
29 0.42
...
182497 0.60
182498 0.00
182499 0.06
182500 0.12
182501 0.00
182502 0.40
182503 0.70
182504 0.42
182505 0.54
182506 0.24
182507 0.56
182508 0.34
182509 0.10
182510 0.18
182511 0.06
182512 0.12
182513 0.00
182514 0.22
182515 0.08
182516 0.22
182517 0.00
182518 0.42
182519 0.02
182520 0.50
182521 0.00
182522 0.08
182523 0.16
182524 0.00
182525 0.32
182526 0.06
Name: prediction_method_used, dtype: float64

In [40]: Y_predd - Y_tr
Y_train_1 Y_train_2

In [40]: Y_predd - Y_train_2
Out[41]:
0 NaN
1 NaN
2 0.04
3 NaN
4 0.48
5 NaN
6 0.00
7 0.00
8 NaN
9 NaN
10 NaN
11 0.32
12 -0.88
13 -0.74
14 0.18
15 NaN
16 NaN
17 NaN
18 NaN
19 0.32
20 0.38
21 0.00
22 0.02
23 0.00
24 0.22
25 NaN
26 0.30
27 NaN
28 0.10
29 0.42
...
260705 NaN
260706 NaN
260709 NaN
260710 NaN
260711 NaN
260713 NaN
260715 NaN
260716 NaN
260718 NaN
260721 NaN
260722 NaN
260723 NaN
260724 NaN
260725 NaN
260726 NaN
260727 NaN
260731 NaN
260735 NaN
260737 NaN
260738 NaN
260739 NaN
260740 NaN
260742 NaN
260743 NaN
260745 NaN
260748 NaN
260749 NaN
260750 NaN
260751 NaN
260752 NaN
dtype: float64

最佳答案

张贴在这里,以便我们可以从评论中关闭问题:

您确定每个数据帧都具有相同的索引范围吗?

您可以通过 df.reset_index(drop=True) 重置两个帧上的索引,然后像您已经在做的那样减去帧。此过程应产生所需的输出。

关于python - Pandas 为什么 int64 - float64 列减法产生 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34319417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com