给出以下数据框:
import pandas as pd
import numpy as np
df = pd.DataFrame({'A':['1a',np.nan,'10a','100b','0b'],
})
df
A
0 1a
1 NaN
2 10a
3 100b
4 0b
我想从每个单元格中提取数字(它们存在的位置)。 期望的结果是:
A
0 1
1 NaN
2 10
3 100
4 0
我知道可以使用str.extract
完成,但我不确定如何。
答案 0 :(得分:22)
给它一个正则表达式捕获组:
df.A.str.extract('(\d+)')
给你:
0 1
1 NaN
2 10
3 100
4 0
Name: A, dtype: object
答案 1 :(得分:2)
要在上面的评论中回答@Steven G的问题,这应该有效:
df.A.str.extract('(^\d*)')
答案 2 :(得分:0)
U可以使用“分配”功能将列替换为结果:
df = df.assign(A = lambda x: x['A'].str.extract('(\d+)'))