如何在Python上从文本数据中分离特定数字
我有一个来自 pandas 的数据框:
id adress
0 Jame Homie Street. N:60 5555242424 La
1 London. 2322325234243 Stw St. N 8 St.bridge
2 32424244234 ddd st. ss Sk. N 63 Manchester
3 Mou st 147 Rochester Liv 33424245223
我想将数字分开(例如 5555242424 ,2322325234243 , 32424244234 ,33424245223 )并创建一个新功能。
示例输出:
id adress number
0 Jame Homie Street. N:60 La 5555242424
1 London. Stw St. N 8 St.bridge 2322325234243
2 ddd st. ss Sk. N 63 Manchester 32424244234
3 Mou st 147 Rochester Liv 3424245223
I have a dataframe from pandas :
id adress
0 Jame Homie Street. N:60 5555242424 La
1 London. 2322325234243 Stw St. N 8 St.bridge
2 32424244234 ddd st. ss Sk. N 63 Manchester
3 Mou st 147 Rochester Liv 33424245223
I want to separate that is the numbers(like 5555242424 ,2322325234243 , 32424244234 ,33424245223 )and create a new feature.
Sample output :
id adress number
0 Jame Homie Street. N:60 La 5555242424
1 London. Stw St. N 8 St.bridge 2322325234243
2 ddd st. ss Sk. N 63 Manchester 32424244234
3 Mou st 147 Rochester Liv 3424245223
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
假设您想要提取第一个至少 4 位数字(因此在示例中它会忽略 60、8、63、147),您可以使用:
Assuming you want to extract the first number that has at least 4 digits (so it ignores 60, 8, 63, 147 in your example), you can use:
列表理解以长度 3 与其他数字分开。如果你想增加的话可以在那里改变。
List comprehension with split at length 3 from other digits. You can change there if you want to increase.
如果您知道所有地址模式,则可以使用一些正则表达式来提取值。
由于在示例中您提供的每一行都与其他行完全不同,因此您可以做的就是依靠 addr 数字长度来构建单个正则表达式,然后将其与其余行分开。
输出是:
If you know all the addresses patterns you can use some regular expressions in order to extract the values.
Since in the example you provided each line is totally different from the others, something you can do is to rely on the addr number length to build a single regex and then split this from the rest.
The output is: