Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用pandas提取特定内容_Python_Regex_Pandas_Dataframe_Series - Fatal编程技术网

Python 如何使用pandas提取特定内容

Python 如何使用pandas提取特定内容,python,regex,pandas,dataframe,series,Python,Regex,Pandas,Dataframe,Series,考虑以下数据 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) 我想从下面的例子中提取毫安时电池数值 2870 5910 1810 我试着用 def func(x): # Split array ar = x.split(' mAh') 但是我没有得到需要返回的内容考

考虑以下数据

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)
我想从下面的例子中提取毫安时电池数值

2870
5910
1810
我试着用

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

但是我没有得到需要返回的内容

考虑到值总是介于
LiPo
mAh
之间,请使用
提取

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

考虑到该值始终位于
LiPo
mAh
之间,请使用
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

它似乎总是第一个数字,因此您可以使用

^\D*(\d+)


有关表达式,请参见。

它似乎总是第一个数字,因此您可以使用

^\D*(\d+)


有关表达式,请参见。

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