给定以下 Dataframe :
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
完成,但我不确定如何完成。
4条答案
按热度按时间fslejnso1#
给予它一个正则表达式捕获组:
为您提供:
(\d+)
是正则表达式捕获组,\d+
指定只匹配数字的正则表达式模式。请注意,这只适用于整数,而不是浮点数。toiithl62#
你可以使用“assign”函数将你的列替换为你的结果:
muk1a3rh3#
要回答@Steven G在上面评论中的问题,这应该行得通:
a6b3iqyw4#
如果你有多个不相交的数字集,比如在
1a2b3c
中,你想提取123
,你可以用Series.str.replace
来做:您也可以使用
Series.str.extractall
和groupby
来解决这个问题,但我认为这个更容易。希望这有帮助!