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).
网友评论