Pandas DataFrame 减法得到了意想不到的结果。而是连接起来?

发布于 2025-01-11 22:51:42 字数 2664 浏览 2 评论 0原文

我有两个相同大小(510x6)的数据帧

preds
               0            1          2           3           4            5
    0   2.610270    -4.083780   3.381037    4.174977    2.743785    -0.766932
    1   0.049673    0.731330    1.656028    -0.427514   -0.803391   -0.656469
    2   -3.579314   3.347611    2.891815    -1.772502   1.505312    -1.852362
    3   -0.558046   -1.290783   2.351023    4.669028    3.096437    0.383327
    4   -3.215028   0.616974    5.917364    5.275736    7.201042    -0.735897
    ... ... ... ... ... ... ...
    505 -2.178958   3.918007    8.247562    -0.523363   2.936684    -3.153375
    506 0.736896    -1.571704   0.831026    2.673974    2.259796    -0.815212
    507 -2.687474   -1.268576   -0.603680   5.571290    -3.516223   0.752697
    508 0.182165    0.904990    4.690155    6.320494    -2.326415   2.241589
    509 -1.675801   -1.602143   7.066843    2.881135    -5.278826   1.831972
    510 rows × 6 columns

outputStats

           0            1          2           3           4            5
0   2.610270    -4.083780   3.381037    4.174977    2.743785    -0.766932
1   0.049673    0.731330    1.656028    -0.427514   -0.803391   -0.656469
2   -3.579314   3.347611    2.891815    -1.772502   1.505312    -1.852362
3   -0.558046   -1.290783   2.351023    4.669028    3.096437    0.383327
4   -3.215028   0.616974    5.917364    5.275736    7.201042    -0.735897
... ... ... ... ... ... ...
505 -2.178958   3.918007    8.247562    -0.523363   2.936684    -3.153375
506 0.736896    -1.571704   0.831026    2.673974    2.259796    -0.815212
507 -2.687474   -1.268576   -0.603680   5.571290    -3.516223   0.752697
508 0.182165    0.904990    4.690155    6.320494    -2.326415   2.241589
509 -1.675801   -1.602143   7.066843    2.881135    -5.278826   1.831972
510 rows × 6 columns

当我执行时,

preds - outputStats

:我期望一个带有元素减法的 510 x 6 数据帧。相反,我得到了这个:

    0   1   2   3   4   5   0   1   2   3   4   5
0   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ...
505 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
506 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
507 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
508 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
509 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

我尝试过删除列等,但这并没有帮助。我也使用 preds.subtract(outputStats) 得到相同的结果。有什么想法吗?

I have two dataframes of the same size (510x6)

preds
               0            1          2           3           4            5
    0   2.610270    -4.083780   3.381037    4.174977    2.743785    -0.766932
    1   0.049673    0.731330    1.656028    -0.427514   -0.803391   -0.656469
    2   -3.579314   3.347611    2.891815    -1.772502   1.505312    -1.852362
    3   -0.558046   -1.290783   2.351023    4.669028    3.096437    0.383327
    4   -3.215028   0.616974    5.917364    5.275736    7.201042    -0.735897
    ... ... ... ... ... ... ...
    505 -2.178958   3.918007    8.247562    -0.523363   2.936684    -3.153375
    506 0.736896    -1.571704   0.831026    2.673974    2.259796    -0.815212
    507 -2.687474   -1.268576   -0.603680   5.571290    -3.516223   0.752697
    508 0.182165    0.904990    4.690155    6.320494    -2.326415   2.241589
    509 -1.675801   -1.602143   7.066843    2.881135    -5.278826   1.831972
    510 rows × 6 columns

outputStats

           0            1          2           3           4            5
0   2.610270    -4.083780   3.381037    4.174977    2.743785    -0.766932
1   0.049673    0.731330    1.656028    -0.427514   -0.803391   -0.656469
2   -3.579314   3.347611    2.891815    -1.772502   1.505312    -1.852362
3   -0.558046   -1.290783   2.351023    4.669028    3.096437    0.383327
4   -3.215028   0.616974    5.917364    5.275736    7.201042    -0.735897
... ... ... ... ... ... ...
505 -2.178958   3.918007    8.247562    -0.523363   2.936684    -3.153375
506 0.736896    -1.571704   0.831026    2.673974    2.259796    -0.815212
507 -2.687474   -1.268576   -0.603680   5.571290    -3.516223   0.752697
508 0.182165    0.904990    4.690155    6.320494    -2.326415   2.241589
509 -1.675801   -1.602143   7.066843    2.881135    -5.278826   1.831972
510 rows × 6 columns

when I execute:

preds - outputStats

I expect a 510 x 6 dataframe with elementwise subtraction. Instead I get this:

    0   1   2   3   4   5   0   1   2   3   4   5
0   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ...
505 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
506 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
507 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
508 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
509 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

I've tried dropping columns and the like, and that hasn't helped. I also get the same result with preds.subtract(outputStats). Any Ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

所谓喜欢 2025-01-18 22:51:42

两个不同的值在显示时可以通过多种方式显示为相同的值。主要方法之一是它们是否是不同的类型,但这些类型具有相应的值。例如,根据您显示它们的方式,int 1 和 str '1' 可能不容易区分。您还可以使用空白字符,例如 '1''1'

如果问题是一组是 int 而另一组是 str,则可以通过将它们全部转换为 int 或全部转换为 str 来解决问题。要执行前者,请执行df.columns = [int(col) for col in df.columns]。要执行后者,df.columns = [str(col) for col in df.columns]。转换为 str 更安全一些,因为如果字符串不适合转换,则尝试转换为 int 可能会引发错误(例如 int('y') 将引发错误),但 int 可以更常见,因为它们具有数字结构。

您在评论中询问了有关删除列的问题。您可以使用 drop 执行此操作,并包含 axis=1 作为参数,告诉它删除列而不是行,或者您可以使用 del 关键字。但是更改列名称应该可以消除删除列的需要。

There are many ways that two different values can appear the same when displayed. One of the main ways is if they are different types, but corresponding values for those types. For instance, depending on how you're displaying them, the int 1 and the str '1' may not be easily distinguished. You can also have whitespace characters, such as '1' versus ' 1'.

If the problem is that one set is int while the other is str, you can solve the problem by converting them all to int or all to str. To do the former, do df.columns = [int(col) for col in df.columns]. To do the latter, df.columns = [str(col) for col in df.columns]. Converting to str is somewhat safer, as trying to convert to int can raise an error if the string isn't amenable to conversion (e.g. int('y') will raise an error), but int can be more usual as they have the numerical structure.

You asked in a comment about dropping columns. You can do this with drop and including axis=1 as a parameter to tell it to drop columns rather than rows, or you can use the del keyword. But changing the column names should remove the need to drop columns.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文