添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
道上混的沙发  ·  [Day16] Python專案 - ...·  4 月前    · 
开朗的小刀  ·  Release 0.5.0 - ...·  2 月前    · 
爱喝酒的白开水  ·  pandas.read_excel — ...·  3 周前    · 
越狱的人字拖  ·  javascript ...·  2 年前    · 
>>>def cal_result(df, x, y): df['C'] = (df['A'] + df['B']) * x df['D'] = (df['A'] + df['B']) * y return df >>>df.apply(cal_result, x=3, y=8, axis=1) # 第一种方式 A B C D 0 0.109197 0.510993 1.860572 4.961525 1 0.888893 0.561702 4.351787 11.604764 >>>df.apply(cal_result, args=(3, 8), axis=1) # 第二种方式 A B C D 0 0.109197 0.510993 1.860572 4.961525 1 0.888893 0.561702 4.351787 11.604764 >>>df.apply(cal_result, **{'x': 3, 'y': 8}, axis=1) # 第三种方式 A B C D 0 0.109197 0.510993 1.860572 4.961525 1 0.888893 0.561702 4.351787 11.604764
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>>> def cal_result ( df , x , y ) :
df [ 'C' ] = ( df [ 'A' ] + df [ 'B' ] ) * x
df [ 'D' ] = ( df [ 'A' ] + df [ 'B' ] ) * y
return df
>>> df . apply ( cal_result , x = 3 , y = 8 , axis = 1 ) # 第一种方式
A B C D
0 0.109197 0.510993 1.860572 4.961525
1 0.888893 0.561702 4.351787 11.604764
>>> df . apply ( cal_result , args = ( 3 , 8 ) , axis = 1 ) # 第二种方式
A B C D
0 0.109197 0.510993 1.860572 4.961525
1 0.888893 0.561702 4.351787 11.604764
>>> df . apply ( cal_result , * * { 'x' : 3 , 'y' : 8 } , axis = 1 ) # 第三种方式
A B C D
0 0.109197 0.510993 1.860572 4.961525
1 0.888893 0.561702 4.351787 11.604764
y 倍添加到 C , D 列中。这里有三种方式可以完成参数的赋值,第一种方式直接通过关键字参数赋值,指定参数的值;第二种方式是使用 args 关键字参数传入一个包含参数的元组;第三种方式传入通过 * * 传入包含参数和值的字典。

apply的使用是很灵活的,再举一个例子,配合 loc 方法我们能够在最后一行得到一个总和:

需要注意的是这里必须使用 df [ [ 'A' ] ] ,表示这是一个DataFrame,而不是一个Series,如果使用 df [ 'A' ] 就会报错。同样从行取元素也要将它先转成DataFrame。还需要注意apply方法和applymap的区别:

  • apply方法操作的是行或列的运算,而不是元素的运算,比如在这里使用格式化操作就会报错;
  • applymap方法操作的是元素,因此没有诸如axis这样的参数,它只接受函数传入。
  • map()方法

    如果你对applymap方法搞清楚了,那么map方法就很简单,说白了map方法是应用在Series中的,还是举上面的例子: