Py100Skills

[Py010] 理解axis

2018-10-22  本文已影响63人  安哥生个信

pandas很多函数里面都有axis参数,大部分默认为axis=0

经常被搞得晕头转向……

瞅了一个小时,大概理清些思路。

我自己的理解:

首先有一个dataframedf

In[29]: df = pd.DataFrame([[2.0, 1.0],
   ...:                     [3.0, np.nan],
   ...:                     [1.0, 0.0]],
   ...:                    columns=list('AB'))
In[30]: df
Out[30]: 
     A    B
0  2.0  1.0
1  3.0  NaN
2  1.0  0.0

可以通过cumsum()函数计算df的累加和

axis=0等同于axis="index",表示这个函数按照pd.index返回列索引)处理dataframe,

所以cumsum(axis=0)以列为单位计算累加和

In[31]: df.cumsum(axis=0)
Out[31]: 
     A    B
0  2.0  1.0
1  5.0  NaN
2  6.0  1.0

axis=1等同于axis="columns", 表示这个函数按照pd.columns返回行索引)处理dataframe.

所以cumsum(axis=1)以行为单位计算累加和

In[32]: df.cumsum(axis=1)
Out[32]: 
     A    B
0  2.0  3.0
1  3.0  NaN
2  1.0  1.0

对于那些只返回一个Series的函数,比如sum(),可以这样顺思路

sum(axis=0)计算每列的和,所以最后返回以列名作为索引的Series;

sum(aixs=1)计算每行的和,所以最后返回以行名作为索引的Series.

In[33]: df.sum(axis=0)
Out[33]: 
A    6.0
B    1.0
dtype: float64
In[34]: df.sum(axis=1)
Out[34]: 
0    3.0
1    3.0
2    1.0
dtype: float64

突然发现dropna()不太适用于上述思路,
dropna(axis=0)按行删除
dropna(axis=1)按列删除

按照《Pandas Cookbook》里面的说法,好像也没法解释dropna()

I remember the meaning of the axis parameter by thinking of 1 as looking like a column, and any operation with axis=1 returns a new column of data (has the same number of items that a column does).

上一篇 下一篇

猜你喜欢

热点阅读