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个唯一值,我只是需要一些提示,我如何才能做到这一点。下面有两个。耶!将它们都用于解决方案:)