pandas--apply/applymap/map
import pandas as pd df=pd.DataFrame({'A':[1,2,3],"B":[11,22,33]}) df['C']=df['A'].apply(lambda x : x+3)#apply运用于series的每个元素,对series运用apply就是对series的每一个元素进行处理 df2=df.applymap(lambda x : x+7)#applymap应用于dataframe中的每个元素 df3=df.apply(sum,axis=1)#对dataframe运用apply函数,是以行或者是列为最小单元的 df4=df.apply(sum,axis=0) print(df['A'].map(lambda x: x+6))#map可以对dataframe中的某一行中的每个元素进行操作 print(df2) print(df3) print(df4) #map函数也可以进行映射 ddf=pd.DataFrame({'name':['shun1','shun2'],"性别":['男','女']})#map函数通过字典进行映射 ddf['性别']=ddf['性别'].map({'男':'man','女':'woman'}) print(ddf) #map函数也可以通过函数进行映射 def replace_function(x): new_x="man" if x=="男" else "woman" return new_x ddf['性别']=ddf['性别'].map(replace_function) print(ddf) map函数的使用 def f(x): return x*x spam=[1,2,3,4] r=list(map(f,spam)) print(r) rr=list(map(str,spam)) print(rr)
import pandas as pd df1 = pd.DataFrame({"lot no":["aw12_A1",'aw13_a2','aw15_a2'],'date':[1,2,3]}) list=['aw12','aw13'] def check(x,list1): for i in list1: if i in x: return x #运用apply函数,可以使用带多个参数的函数 #对series中的每个元素运用这个参数,对该参数运用之后返回一个值,函数里面的值 lotlist = df1['lot no'].apply(check,args=(list,)).dropna().tolist() print(df1[df1['lot no'].isin(lotlist)]['date'])
详情:https://zhuanlan.zhihu.com/p/100064394