我有一个 Dataframe (约100万行),其中列('Product')包含'none'、'q1'、'q123'或'q12_a123'等字符串。
我想提取字母“q”后面的数字,并将其输入到另一列(“AmountPaid”)中,使其看起来像下面这样:
'Product' 'AmountPaid'
none 0
q1 1
q123 123
q12_a123 12
到目前为止,我已经:
for i in range(0,1000000):
if 'q' not in df.loc[i,'Product']:
df.loc[i,'AmountPaid']=0
else:
# set 'AmountPaid' to the number following 'q'
问题:
1.如何提取紧跟着字母“q”的数字,但不一定是后面的所有数字?例如,从'q12_a123'中提取12。
1.大多数“AmountPaid”条目将设置为0。有没有比上面的for循环和if/else语句更有效的方法?
2条答案
按热度按时间iyfamqjs1#
您正在查找在字符
'q'
上具有lookbehind的str.extract
。jchrr9hc2#
作为对cs95's answer的补充,由于
str.extract
只捕获捕获组内的内容,因此不需要向后看。可以直接使用
q(\d+)
:输出量:
这不仅在语法方面更短,而且更高效: