>> df = pd.DataFrame([[1, 1, 1, 1], [2, 2, 2,-6ren">
gpt4 book ai didi

python - Pandas Dataframe/Numpy 数组 "axis"定义中的歧义

转载 作者:IT老高 更新时间:2023-10-28 21:12:21 26 4
gpt4 key购买 nike

我一直很困惑 python 轴是如何定义的,以及它们是指 DataFrame 的行还是列。考虑下面的代码:

>>> df = pd.DataFrame([[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]], columns=["col1", "col2", "col3", "col4"])
>>> df
col1 col2 col3 col4
0 1 1 1 1
1 2 2 2 2
2 3 3 3 3

因此,如果我们调用 df.mean(axis=1),我们将得到各行的平均值:

>>> df.mean(axis=1)
0 1
1 2
2 3

但是,如果我们调用 df.drop(name, axis=1),我们实际上是删除一列,而不是一行:

>>> df.drop("col4", axis=1)
col1 col2 col3
0 1 1 1
1 2 2 2
2 3 3 3

谁能帮我理解 pandas/numpy/scipy 中的“轴”是什么意思?

附带说明,DataFrame.mean 可能定义错误。它在 DataFrame.mean 的文档中说axis=1 应该表示列的平均值,而不是行...

最佳答案

可能最简单的方法是将其记住为 0=down1=across

这意味着:

  • 使用 axis=0 将方法应用到每一列或行标签(索引)。
  • 使用 axis=1 将方法应用于每一行或列标签。

这是一张显示每个轴所指的 DataFrame 部分的图片:

记住 Pandas 遵循 NumPy 对 axis 一词的使用也很有用。用法在 NumPy 的 glossary of terms 中有解释。 :

Axes are defined for arrays with more than one dimension. A 2-dimensional array has two corresponding axes: the first running vertically downwards across rows (axis 0), and the second running horizontally across columns (axis 1). [my emphasis]

因此,关于问题中的方法,df.mean(axis=1) 似乎是正确定义的。它采用横向跨列条目的平均值,即沿每个单独的行。另一方面,df.mean(axis=0) 将是一个垂直向下跨行的操作。

同样,df.drop(name, axis=1) 指的是对列标签的操作,因为它们直观地穿过水平轴。指定 axis=0 将使该方法改为作用于行。

关于python - Pandas Dataframe/Numpy 数组 "axis"定义中的歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25773245/

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