Python使用pandas将本地时间戳转UTC时报TypeError如何解决?
错误原因
dt.tz_localize()方法仅支持传入单个固定时区字符串,你直接传入df4['timezone_x']这个Series对象,不符合方法的入参要求,因此触发类型错误。
解决方案
方案1:逐行处理(适合小数据量)
通过apply逐行读取对应行的时区参数完成转换,代码如下:
df4['utc_column'] = df4.apply( lambda row: row['local'].tz_localize(row['timezone_x']).tz_convert('UTC'), axis=1 )
注意:如果你的local列本身已经是带时区的datetime类型,需要先去除原有时区再处理,把row['local']替换为row['local'].tz_localize(None)即可。
方案2:分组批量处理(适合大数据量,性能更高)
按时zone字段分组,每组内时区统一可以批量调用dt类方法,避免逐行遍历的性能损耗:
def tz_convert_group(group): current_tz = group['timezone_x'].iloc[0] group['utc_column'] = group['local'].dt.tz_localize(current_tz).dt.tz_convert('UTC') return group df4 = df4.groupby('timezone_x', group_keys=False).apply(tz_convert_group)
内容的提问来源于stack exchange,提问作者inspiredd
相关产品推荐
相关产品推荐

