pandas apply 总结(待续)

apply 是非常常用的一个函数,在处理数据过程中非常有效。因此,在此做一个分享总结。
在处理过程中,最麻烦的其实是涉及 axis =0 或者1 的问题。

在说明之前非常有必要要说明axis 的定义问题

 df=pd.DataFrame({'a':[1,4],'b':[2,5],'c':[3,6]})
index a b c
1 1 2 3
2 4 5 6
  • 再提前要说明下apply 的运行机制,apply 后面会传进去一个向量,然后函数作用在这个向量上进行计算,然后会传出一个值或者向量或者其他,需要其他相应格式再承接出来。

  • 然后要再区分开一个不同就是apply 作用的向量是row还是columns,如果是row那么axis=1,如果是columns,那么axis=0,(切记),而且axis=0 ,永远都是默认值。

  • 然后再看,如果是axis=0,那么作用的是,那么你会发现结果所有的进行计算(就是说那么多行会发生挤压或者压缩或者扩张之类的变化)。
    如下所示:

df.apply(np.sum)# 变成一个series 
index a
a 5
b 7
c 9

或者也可以变成一个dataframe,这都是不同的函数导致,这个无所谓

 df.apply(lambda x:x.head(1)) 
index a b c
1 1 2 3

如果axis=1呢?

df.apply(np.sum,axis=1)# 变成一个series 
index value
0 6
1 15

所以总结下,当axis=0, 传进去函数的是列向量,但其实还是进行行运算,当axis=1, 传进去函数的是行向量,但其实还是进行列运算。

如果你是一个比较深入用pandas 的用户,你会发现
dropna axis=0 删除空值所在行
axis =1 删除空值所在列
drop axis=0 删除所在行
axis =1 删除所在列

其实在这里,也不矛盾,axis=0,默认的都是进行 行运算

Series

不涉及axis 的问题,非常简单。

你可能感兴趣的:(pandas apply 总结(待续))