import pandas as pd
import numpy as np
data = pd.DataFrame({'k1':['beijing,haidian,chushou','beijing,chaoyang,chushou','beijing,fengtai,chuzu'] ,'k2': ['beijing,xicheng,chuzu','beijing,shijingshan,chushou',np.nan]})
data
替换
data.k2.str.replace('beijing','shanghai')#将K2中的beijing替换为shanghai
包含
data.k1.str.contains('chushou')
data[data.k1.str.contains('chushou')]
data.k2.str.upper() #大写
分割
data.k2.str.split(',')#将字符串分离
data.k2.str.split(',')[0][0]
data.k1.str[:6]
函数映射来转换数据
用于series的map方法接受一个函数,或是一个字典,包含着映射关系,但这里有一个小问题,有些值是大写,有些是小写。因此,我们先用str.lower把所有的值变为小写:
quyu_to_chengshi = {
'chaoyang': 'beijing',
'huangpu': 'shanghai',
'jingan': 'shanghai',
'haidian': 'beijing',
'fengtai': 'beijing',
'tongzhou': 'beijing'
}
quyu_to_chengshi
data = pd.Series(['chaoyang','jingan','huangpu','jingan','fengtai','jingan','tongzhou','haidian','jingan'])
data
data.map(quyu_to_chengshi)#map只能应用于Series 将data里的区根据quyu_to_chengshi映射替换成城市
data.map(lambda x:x.upper())#将lambda x(为一个函数):自变量x(为元素)中的所有字符都变成大写。
data =pd.DataFrame(np.random.randn(5,4),columns=list('abcd'))
data
data.apply(np.cumsum,axis =1) #列累加
data.apply(lambda x:x.max() - x.min()) #在列上应用
元素级别的方法
data.applymap(lambda x: x+100)