來源:https://zhuanlan.zhihu.com/p/115646862
之前一直對pandas和numpy里的axis 參數理解的不透徹,今天把它寫下來加深印象。 axis = 0 是代表跨行,而axis = 1 是代表跨列,想明白這一點,對於其他的操作就都想明白了。 numpy 官方文檔對axis的解釋很簡單,但是卻很有用。numpy官方文檔
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).

二維數組有2個軸,0軸和1軸,以前我一直理解成axis = 0代表行,axis = 1 代表列,但是到了求運算的時候,比如sum(),mean()的時候,卻往往是反的,其實並沒有反,是我沒有理解透。
1. axis = 0,指的就是跨行,也就是沿着行標簽index垂直向下執行。
2. axis = 1,指的是跨列,也就是沿着列名水平方向執行
對於經典的問題,下面的問題我們來解釋一下:

也就是說,當axis = 0的時候,我們是在跨行進行操作的,而當我們指定了某一個索引,它就跨不了行了,只能在特定的行上執行操作;對於一些算數運算,跨行操作就變成了一列一列的操作,也就是比如我取了第一行的一個值,然后再向下取第二個行的值,再向下取第三個值,依次類推,就是一列。
而當axis = 1 的時候,就是跨列在水平方向上操作,而當我們指定了某一個列的時候,就不能跨列了,只能在這個列上執行;對於算數運算sum(),mean()求值的時候,就是在橫向上遍歷每行,對每行的數據進行操作,說簡單點,就是我在第一列取了一個值,再在第二列取了第二個值,然后在第三列取第三個值,最終就是一行值了,所以最終就是對每行進行操作。
我們來用代碼示例以下:
df1 = DataFrame(np.array([[1,2,3,4],[5,6,7,8]]),index = ['a','b'],columns = ['one','two','three','four'])



pandas 中drop方法axis參數默認是0,如果我們需要刪除列的話,必須要指定axis = 1,否則就可能報錯,除非索引有和列名重名的。
另外本文的理解特別感謝這篇博客,我看了其他的博客說的都不是太明白。
https://www.cnblogs.com/wangcuican/p/11984829.html
