Pandas 从字符串中提取数字

新手上路,请多包涵

给定以下数据框:

 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 来完成,但我不确定怎么做。

原文由 Dance Party 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 876
2 个回答

给它一个正则表达式捕获组:

 df.A.str.extract('(\d+)')

给你:

 0      1
1    NaN
2     10
3    100
4      0
Name: A, dtype: object

原文由 Jon Clements 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用“分配”功能用您的结果替换您的列:

 df = df.assign(A = lambda x: x['A'].str.extract('(\d+)'))

原文由 Mehdi Golzadeh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题