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

 

posted @ 2021-03-03 21:24  朵朵奇fa  阅读(72)  评论(0编辑  收藏  举报