找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 6093|回复: 4

[求助] 如何实现分割中文和数字字母

9

主题

27

帖子

27

积分

贫民

积分
27
falseform 发表于 2018-2-7 17:23:15 | 显示全部楼层 |阅读模式
有一个数据框df   某列的内容都是中文+字母+数字的格式例如

断肠草30g
狗尾吧草110kg
熊胆2g

想把这一列变成三列
断肠草     30    g
狗尾巴草   110   kg
这种格式 请问如何搞定呢,我发现有关分割中文这方面内容很少
回复

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2018-2-7 19:22:46 | 显示全部楼层
本帖最后由 sheeboard 于 2018-2-7 22:26 编辑

m = re.match(r"([\u4e00-\u9fa5]+)([0-9]+)([a-z]+)", s)
item=m.groups()
Screenshot from 2018-02-07 22-24-49.png
回复 支持 2 反对 0

使用道具 举报

9

主题

27

帖子

27

积分

贫民

积分
27
falseform  楼主| 发表于 2018-2-8 16:26:15 | 显示全部楼层
sheeboard 发表于 2018-2-7 19:22
m = re.match(r"([\u4e00-\u9fa5]+)([0-9]+)([a-z]+)", s)
item=m.groups()

厉害了我的哥
回复 支持 反对

使用道具 举报

9

主题

27

帖子

27

积分

贫民

积分
27
falseform  楼主| 发表于 2018-2-9 10:34:43 | 显示全部楼层
sheeboard 发表于 2018-2-7 19:22
m = re.match(r"([\u4e00-\u9fa5]+)([0-9]+)([a-z]+)", s)
item=m.groups()

我回去试了下,发现这个方法只能针对单个字符串,请问怎样批量操作一整列呢,我用apply好像不可以
回复 支持 反对

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2018-2-9 16:14:37 | 显示全部楼层
def my_split(s):
     m = re.match(r"([\u4e00-\u9fa5]+)([0-9]+)([a-z]+)", s)
     return m.groups()
df['temp']=df['name'].apply(my_split)
df1=pd.DataFrame()
df1['name']=df.temp.str[0]
df1['weight']df.temp.str[1]
这个方法比较傻
研究一下pandas.Series.str.split ,这个可以直接用正则表达式生成df的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表