我在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结转,即使其他行具有其他值。 如何在每行的基础上正确提取正则表达式以生成新列,为什么上述失败?
答案 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