为啥pandas.DataFrame.sum(axis=0) 在axis = 0代表行的每一列中返回值的总和?
Posted
技术标签:
【中文标题】为啥pandas.DataFrame.sum(axis=0) 在axis = 0代表行的每一列中返回值的总和?【英文标题】: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
【问题讨论】:
Axis=0 并不代表您所想的行。如果要对一行中的所有值求和,或者对每一行应用一个函数,请使用axis=1。有关详细信息,请参阅***.com/questions/22149584/…。 这能回答你的问题吗? What does axis in pandas mean? 【参考方案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 时,您正在遍历列。
【讨论】:
以上是关于为啥pandas.DataFrame.sum(axis=0) 在axis = 0代表行的每一列中返回值的总和?的主要内容,如果未能解决你的问题,请参考以下文章
为啥寄存器 ax 中的内存整数总和正确,但寄存器 eax 不正确?