如何理解pandas中axis参数

背景

在pandas中DataFrame乘法运算时遇到了坑,df.mul(series, axis=0),原意是想让series与df的每行数据相乘,所以令axis为0(或index),但报错,把axis改为1(或columns)正确,直接使用df * series也能正确计算。通过查找资料,发现axis参数的真实含义,现将个人理解写下。

问题:

  • 为什么
    df.drop(index, axis=0),是去掉某一行数据;
    df.drop(col_name, axis=1),是去掉某一列的数据?
  • 为什么
    df.sum(axis=0),是求每的数据之和;
    df.sum(axis=1),是求每的数据之和?

答疑:

示意图

从这张图可以看出,

  • axis=0、axis=index,指的是遍历每个index、行号,即在纵向上遍历每列,所以做sum()、mean()等运算时,是对每列数据做操作,而drop(index, axis=0),传入的参数指定了某一行号,所以会在纵向上遍历每列,去掉行号对应位置的数据

  • axis=1、axis=columns,指的是遍历每个columns、列名,即在横向上遍历每行,所以做sum()、mean()等运算时,是对每行数据做操作,而drop(col, axis=1),传入的参数指定了某一列名,所以会在横向上遍历每行,去掉列名对应位置的数据

补充

pandas和numpy对于axis参数的使用是一致的,从numpy官方术语表对于axis的释义可知一二。
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).

参考

  1. Ambiguity in Pandas Dataframe / Numpy Array “axis” definition
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容