使用pandas dataframe列上的apply()执行正则表达式提取使用所有行的第一行结果

时间:2016-06-06 21:26:40

标签: python regex dataframe

我在Pandas DateFrame中有一列时区字符串,其中每个字符串条目都是以下内容的变体:

'Local Time Zone (America/Chicago (CST) offset -21600)'

我试图通过apply调用来提取字符串末尾的数字偏移量(以秒为单位列出):

df['minuteOffset'] = df.timezone.apply(lambda x: int(re.match('.*?offset (-?[0-9]*)\\)', a).group(1)))

然而,当我查看数据框时,我看到所有行的第一个值-21600结转,即使其他行具有其他值。 如何在每行的基础上正确提取正则表达式以生成新列,为什么上述失败?

1 个答案:

答案 0 :(得分:0)

我会这样做:

In [85]: In [82]: df
Out[85]:
   id                                               timezone
0   1  Local Time Zone (America/Chicago (CST) offset -21600)
1   2    Local Time Zone (Kiev/Ukraine (EEST) offset +10800)

In [86]: df['minuteOffset'] = df.timezone.str.replace(r'.*offset\s+([\+\-\d+]+)\)', r'\1').astype(int)/60

In [87]: df
Out[87]:
   id                                               timezone  minuteOffset
0   1  Local Time Zone (America/Chicago (CST) offset -21600)        -360.0
1   2    Local Time Zone (Kiev/Ukraine (EEST) offset +10800)         180.0