Pandas Dataframe/Numpy数组“轴”如何定义模糊度?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (33)

对于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的"axis"?

提问于
用户回答回答于

  • 使用axis=0若要将方法应用到每个列或行标签(索引)中,请执行以下操作。
  • 使用axis=1若要将方法应用于每一行,或应用于列标签,请执行以下操作。

下面是一张图片,显示每个轴所引用的DataFrame的各个部分:

用户回答回答于

// Not realistic but ideal for understanding the axis parameter 
df = pd.DataFrame([[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]],
                  columns=["idx1", "idx2", "idx3", "idx4"],
                  index=["idx1", "idx2", "idx3"]
                 )

---------------------------------------1
|          idx1  idx2  idx3  idx4
|    idx1     1     1     1     1
|    idx2     2     2     2     2
|    idx3     3     3     3     3
0

df.drop(轴指位置)

A: I wanna remove idx3.
B: **Which one**? // typing while waiting response: df.drop("idx3",
A: The one which is on axis 1
B: OK then it is >> df.drop("idx3", axis=1)

// Result
---------------------------------------1
|          idx1  idx2     idx4
|    idx1     1     1     1
|    idx2     2     2     2
|    idx3     3     3     3
0

df.apply(轴指方向)

A: I wanna apply sum.
B: Which direction? // typing while waiting response: df.apply(lambda x: x.sum(),
A: The one which is on *parallel to axis 0*
B: OK then it is >> df.apply(lambda x: x.sum(), axis=0)

// Result
idx1    6
idx2    6
idx3    6
idx4    6

扫码关注云+社区