1. apply,applymap和map的应用
总结:
>>> df = pd.DataFrame(np.random.randint(0,10,(4, 3)), columns=list('bde'), index=range(4))
>>> df
b d e
2 0 5
8 9 1
3 6 6
4 8 4
apply
用在dataframe上,用于对row或者column进行计算;
>>> f = lambda x: x.max() - x.min()
>>> df.apply(f)
b 6
d 9
e 5
dtype: int64
>>> df.apply(f,axis=1) # 作用在一行上
5
8
3
4
dtype: int64
>>> df.apply(f,axis=0) # 作用在一列上,axis=0可省略
b 6
d 9
e 5
dtype: int64
applymap
用于dataframe上,是元素级别的操作;
>>> f2 = lambda x: x+1 if x%2==0 else x
>>> df.applymap(f2)
b d e
3 1 5
9 9 1
3 7 7
5 9 5
map
(其实是python自带的)用于series上,是元素级别的操作。
>>> data = {'id':range(5),'value':list("abcab")}
>>> frame = pd.DataFrame(data)
>>> frame
id value
0 a
1 b
2 c
3 a
4 b
>>> def testf(x, str):
... return x,str
>>> frame["id"].apply(testf, args=("ok",))
(0, ok)
(1, ok)
(2, ok)
(3, ok)
(4, ok)
Name: id, dtype: object
# 注意这里args只能传入(元组),不能是"ok"或("ok")
2. 排序函数:sort_values
## 参数
DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')
#### 参数说明
axis:{0 or ‘index’, 1 or ‘columns’}, default 0,默认按照索引排序,即纵向排序,如果为1,则是横向排序
by:str or list of str;如果axis=0,那么by="列名";如果axis=1,那么by="行名";
ascending:布尔型,True则升序,可以是[True,False],即第一字段升序,第二个降序
inplace:布尔型,是否用排序后的数据框替换现有的数据框
kind:排序方法,{‘quicksort’, ‘mergesort’, ‘heapsort’}, default ‘quicksort’。似乎不用太关心
na_position : {‘first’, ‘last’}, default ‘last’,默认缺失值排在最后面