【问题标题】:How to extract specific content using pandas如何使用 pandas 提取特定内容
【发布时间】:2019-08-03 17:47:43
【问题描述】:

考虑以下数据

Non-removable Li-Po 2870 mAh battery
Non-removable Li-Po 5910 mAh battery (A3-A20-K1AY)
Non-removable Li-Po 1810 mAh battery (6.9 Wh)

我想像下面这样提取 mAh 电池数值

2870
5910
1810

我尝试过使用

def func(x):
  # Split array
  ar = x.split(' mAh')

但我不知道我需要返回什么

【问题讨论】:

  • 它是一个数据框,这只是数据的一部分
  • 如果只是一个样本,那么这里的 constant 上下文是什么,可以帮助检测数字?它总是一个整数值吗?号码前总是有Li-Po吗?后面总是有mAh吗?请注意,meW 的建议可能会超过而 Jan 的解决方案可能会不足,这取决于您希望在这里满足什么要求。当涉及到正则表达式问题时,请具体说明。
  • 我知道它只是列有 1200 个唯一值我只是需要一些提示我将如何能够做到这一点
  • 下面有两个。
  • 是的!将它们都用于解决方案:)

标签: python regex pandas dataframe series


【解决方案1】:

它似乎总是第一个数字,所以你可以使用

^\D*(\d+)

df.column_in_question_here.str.extract('^\D*(\d+)')

表达式见a demo on regex101.com

【讨论】:

    【解决方案2】:

    考虑到值始终位于LiPomAh 之间,请使用extract

    df = pd.DataFrame({'col': ['Non-removable Li-Po 2870 mAh battery',
                               'Non-removable Li-Po 5910 mAh battery (A3-A20-K1AY)',
                               'Non-removable Li-Po 1810 mAh battery (6.9 Wh)']})
    df.col.str.extract('Li-Po (.*) mAh')
    
          0
    0  2870
    1  5910
    2  1810
    

    【讨论】:

      猜你喜欢
      • 2013-02-09
      • 2020-11-16
      • 2013-02-16
      • 2012-02-02
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 2013-12-04
      • 2019-08-14
      相关资源
      最近更新 更多