简体   繁体   English

如何分割数字和文字

[英]How to split digits and text

I have a dataset like this 我有一个像这样的数据集

data = pd.DataFrame({ 'a' : [5, 5, '2 bad']})

I want to convert this to 我想将其转换为

{ 'a.digits' : [5, 5, 2], 'a.text' : [nan, nan, 'bad']}

I can get 'a.digits' as bellow 我可以像下面这样得到“ a.digits”

data['a.digits'] = data['a'].replace('[^0-9]', '', regex = True) 
5    2
2    1
Name: a, dtype: int64

When i do 当我做

data['a'] = data['a'].replace('[^\D]', '', regex = True)

or 要么

data['a'] = data['a'].replace('[^a-zA-Z]', '', regex = True)

i get 我得到

5      2
bad    1
Name: a, dtype: int64

What's wrong? 怎么了? How to remove digits? 如何删除数字?

Something like this would suffice? 这样的东西就足够了吗?

In [8]: import numpy as np

In [9]: import re

In [10]: data['a.digits'] = data['a'].apply(lambda x: int(re.sub(r'[\D]', '', str(x))))

In [12]: data['a.text'] = data['a'].apply(lambda x: re.sub(r'[\d]', '', str(x)))

In [13]: data.replace('', np.nan, regex=True)
Out[13]: 
       a a.digits a.text
0      5        5    NaN
1      5        5    NaN
2  2 bad        2    bad

假设在2和Bad之间有一个空格,您可以这样做:

data['Text'] = data['a'].str.split(' ').str[1]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM