python 判断字符串当中是否包含字符(str.contain)

有一个ssqdatav2数据,要找到其中的深圳,并且替换成圳。

因为收集到的数据出现了错误,本来只有省份简写的地方却出现了深圳。

python 判断字符串当中是否包含字符(str.contain)

如何找到DF中包含深圳的数据?

cond=ssqdatav2[\'first\'].str.contains(\'深圳\')
ssqdatav2.loc[cond]

python 判断字符串当中是否包含字符(str.contain)

此时就找到first当中包含深圳的数据。

1、在first当中找到汉字

# 为分解firstprize定义函数
def fpp(x):
    if len(x)<=2:  # 判断是否只有汉字,还是也有数字
        return \"待定\" # 没有汉字的用待定表示
    else: # 使用正则表达式获取中文
        pattern=\"[\\u4e00-\\u9fa5]\"  # 汉字专用字符ASCII区间
        pat=re.compile(pattern)
        return \',\'.join(pat.findall(x)) # 使用逗号作为每个省份的分隔符
#使用fp() 
ssqdatav2[\'fpprovince\']=ssqdatav2[\'first\'].apply(lambda x:fpp(x))
ssqdatav2.head()

python 判断字符串当中是否包含字符(str.contain)

将每个省份单独形成1列:

fpnames=[\'p01\',\'p02\',\'p03\',\'p04\',\'p05\'] 
ssqdatav3[fpnames]=ssqdatav3[\'fpprovince\'].str.split(\',\',expand=True)
ssqdatav3

python 判断字符串当中是否包含字符(str.contain)

去除掉None值,是None的地方变成空值:

# 逐个分割
ssqdatav3[\'p001\']=ssqdatav3[\'fpprovince\'].apply(lambda x:x if x.count(\',\')==0 else x.split(\',\')[0])
ssqdatav3[\'p002\']=ssqdatav3[\'fpprovince\'].apply(lambda x:x.split(\',\')[1] if x.count(\',\')>=1 else \'\')
ssqdatav3[\'p003\']=ssqdatav3[\'fpprovince\'].apply(lambda x:x.split(\',\')[2] if x.count(\',\')>=2 else \'\')
ssqdatav3[\'p004\']=ssqdatav3[\'fpprovince\'].apply(lambda x:x.split(\',\')[3] if x.count(\',\')>=3 else \'\')
ssqdatav3[\'p005\']=ssqdatav3[\'fpprovince\'].apply(lambda x:x.split(\',\')[4] if x.count(\',\')>=4 else \'\')

ssqdatav3.to_excel(\'ssqdatav3p05.xlsx\',index=False)
ssqdatav3.head()

python 判断字符串当中是否包含字符(str.contain)

# 让双色球的期号ID成为订单号,7个号码都有对应的订单号,即每个期号都有7个订单号且分成不同的行
import numpy as np 
ssqdatav3[\'province2\']=ssqdatav3[\'fpprovince\'].apply(lambda x:x.split(\',\'))
ssqdatav3

province2=ssqdatav3[\'province2\'].to_list()
province2
rs=[len(r) for r in province2]
rs 
a=np.repeat(ssqdatav3[\'id\'],rs)
a 
ssqdataprov=pd.DataFrame(np.column_stack((a,np.concatenate(province2))),columns=[\'ID\',\'PROVINCE\'])


# ssqdataprov=ssqdataprov[(ssqdataprov[\'PROVINCE\']!=\'深\')] # 等价
# ssqdataprov=ssqdataprov[~(ssqdataprov[\'PROVINCE\']==\'深\')] # 等价
ssqdataprov=ssqdataprov[~(ssqdataprov[\'PROVINCE\'].str.contains(\'深\'))]

ssqdataprov

python 判断字符串当中是否包含字符(str.contain)

按照每个字段来划分,并且删去含有深的字段,这样就只保留圳字了

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容