我正在使用一个使用带有时区信息的 DatetimeIndex 的 Pandas DataFrame。我的目标是计算每个时间戳的时区偏移量(以小时为单位),并将这些偏移量存储在 DataFrame 中的新列中。
当前方法:
目前,我正在使用.map()
与 a 结合的函数lambda
从每个时间戳中提取 UTC 偏移量:
import pandas as pd
# Sample DataFrame setup
timestamps = pd.date_range('2024-01-01 00:00:00', '2024-12-31 23:59:59', freq='5min', tz='Europe/Brussels')
df = pd.DataFrame({'value': range(len(timestamps))}, index=timestamps)
# Computing timezone_offset using .map() and lambda
df['timezone_offset'] = df.index.map(
lambda x: x.utcoffset().total_seconds() / 3600 if x.utcoffset() else 0)
print(df['timezone_offset'][:5])
输出
2024-01-01 00:00:00+01:00 1.0
2024-01-01 00:05:00+01:00 1.0
2024-01-01 00:10:00+01:00 1.0
2024-01-01 00:15:00+01:00 1.0
2024-01-01 00:20:00+01:00 1.0
问题:
虽然此方法可以准确填充“timezone_offset”列,但随着 DataFrame 的大小增加,它变得非常慢。处理 100,000 个条目需要相当长的时间,这对于较大的数据集或实时应用程序来说是一个瓶颈。
客观的:
我的目标是将时区偏移计算矢量化,以提高性能并减少计算时间。理想情况下,我希望避免使用 .map() 等带有 lambda 函数的逐行操作,因为这些操作对于大型数据集来说效率低下。