我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文解读dataframe类型的各种方法里面的axis参数是什么意思,axis并不是属性,而是经常出现在各种函数方法里面的参数。其实,一句话总结本文的话,axis就是表述操作的是数据流的运动方向,axis=1为一列一列推进,axis=0为一行一行推进。

苏南大叔:如何理解pandas库dataframe类型方法里面的axis参数? - dataframe-axis
如何理解pandas库dataframe类型方法里面的axis参数?(图5-1)

大家好,这里是苏南大叔的程序如此灵动博客,记录苏南大叔的代码编程感悟。本文描述dataframe的世界里面,axis究竟代表着什么意思。测试环境:python@3.11.0win10

方法综述

在前面的文章里面,对dataframe里面进行列删除或者列合并操作的时候,都曾经涉及到axis的概念。参考文章:

总的原则,是表述数据流推进的方向:

  • axis=1还可以表述为:axis="columns",数据流方向为一列一列(从左到右)推进。
  • axis=0还可以表述为:axis="index",数据流方向为一行一行(从上到下)推进。

苏南大叔:如何理解pandas库dataframe类型方法里面的axis参数? - axis综述
如何理解pandas库dataframe类型方法里面的axis参数?(图5-2)

为了更好的理解本文的内容,本文还增加了一个.sum()方法,作用是对某行或某列数据求和。本文共涉及三个方法:

方法名作用
df.sum()求和
df.drop()删除
pd.concat()合并

范例数据

现在定义了两个dataframe数据,用于后续的演示:

import pandas as pd

df = pd.DataFrame(
    [[1, 2, 3], [3, 2, 1], [5, 6, 7]],
    columns=["col1", "col2", "col3"],
    index=["row1", "row2", "row3"],
)
print(df)

df2  = pd.DataFrame(
    [[0, 0, 0], [5, 5, 5], [9, 9, 9]],
    columns=["col1", "col2", "col3"],
    index=["row1", "row2", "row3"],
)
print(df2)

苏南大叔:如何理解pandas库dataframe类型方法里面的axis参数? - axis基础数据
如何理解pandas库dataframe类型方法里面的axis参数?(图5-3)

输出:

      col1  col2  col3
row1     1     2     3
row2     3     2     1
row3     5     6     7
      col1  col2  col3
row1     0     0     0
row2     5     5     5
row3     9     9     9

axis=1/axis="columns",水平一列一列推进

axis=1/axis="columns",数据流沿【水平方向】流动,从左到右一列一列推进。

  • df.sum(axis=1)是针对每一行求和。
  • df.drop(col, axis=1) 是去掉某一列(或某几列)数据。
  • pd.concat([df, df2], axis=1)是叠加在右侧的。

苏南大叔:如何理解pandas库dataframe类型方法里面的axis参数? - 数据流水平流动
如何理解pandas库dataframe类型方法里面的axis参数?(图5-4)

测试代码之求每行的和:

print(df.sum(axis=1))

输出结果:

row1     6
row2     6
row3    18
dtype: int64

测试代码之删除某几列:

print(df.drop("col1", axis=1))
print(df.drop(["col1","col2"], axis="columns"))

输出结果:

        col2  col3
row1     2     3
row2     2     1
row3     6     7
      col3
row1     3
row2     1
row3     7

测试代码之合并到右侧:

print(pd.concat([df, df2], axis=1))

输出为:

      col1  col2  col3  col1  col2  col3
row1     1     2     3     0     0     0
row2     3     2     1     5     5     5
row3     5     6     7     9     9     9

axis=0/axis="index",垂直一行一行推进

axis=0/axis="index",数据流沿着【垂直方向】流动,所以:

  • df.sum(axis=0) 是针对每一列求和。
  • df.drop(index, axis=0) 是删除某一行(或某几行)数据。
  • pd.concat([df, df2], axis=1)效果是叠加在底部的。

苏南大叔:如何理解pandas库dataframe类型方法里面的axis参数? - 数据流竖直流动
如何理解pandas库dataframe类型方法里面的axis参数?(图5-5)

测试代码之求每列的和:

print(df.sum(axis=0))

输出结果:

col1     9
col2    10
col3    11
dtype: int64

测试代码之删除某几行:

print(df.drop("row1", axis=0))
print(df.drop(["row1","row2"], axis="index"))

输出结果:

      col1  col2  col3
row2     3     2     1
row3     5     6     7
      col1  col2  col3
row3     5     6     7

测试代码之合并到下方:

print(pd.concat([df, df2], axis=0))

输出为:

      col1  col2  col3
row1     1     2     3
row2     3     2     1
row3     5     6     7
row1     0     0     0
row2     5     5     5
row3     9     9     9

结束语

苏南大叔的更多python文章,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python