【问题标题】:why pandas.DataFrame.sum(axis=0) returns sum of values in each column where axis =0 represent rows?为什么pandas.DataFrame.sum(axis=0) 在axis = 0代表行的每一列中返回值的总和?
【发布时间】:2020-08-24 16:30:31
【问题描述】:

在 pandas 中,axis=0 代表行axis=1 代表列。 因此要获取 pandas 中每一行的值的总和,调用 df.sum(axis=0)但它会返回每列中值的总和,反之亦然。 为什么???

import pandas as pd
df=pd.DataFrame({"x":[1,2,3,4,5],"y":[2,4,6,8,10]})
df.sum(axis=0)

数据框:

   x   y
0  1   2

1  2   4

2  3   6

3  4   8

4  5  10

输出:

x    15

y    30

预期输出:

0     3

1     6

2     9

3    12

4    15

【问题讨论】:

标签: python pandas data-science data-analysis


【解决方案1】:

我认为解释axis 参数的正确方法是对哪个轴求和'over'(或'across'),而不是计算总和的'方向'。指定axis = 0 计算总和行,为您提供每列的总数; axis = 1 计算各列的总和,为您提供每一行的总和。

【讨论】:

    【解决方案2】:

    我正在阅读 pandas 项目中的源代码,我认为这来自 Numpy,在这个库中以这种方式使用(垂直总和为 1,水平总和为 1),另外 Pandas 按顺序在引擎盖下使用 numpy赚到这笔钱。

    在这个link 中,您可以检查pandas 是否使用numpy.cumsum 函数来求和。 而这个link 用于 numpy 文档。

    如果您正在寻找一种方法来记住如何使用轴参数,“anant”答案,这是一个很好的方法,解释和 over 轴而不是 across。因此,当指定为 0 时,您正在计算行的总和(迭代索引以获得更多的 pandas doc 投诉)。当轴为 1 时,您正在遍历列。

    【讨论】:

      猜你喜欢
      • 2022-10-25
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多