gpt4 book ai didi

python - 转换为 int64 时,DataFrame 中的混合时间戳会导致错误

转载 作者:行者123 更新时间:2023-12-04 07:52:00 24 4
gpt4 key购买 nike

我正在合并来自多个来源的时间索引数据(有时作为整数时间戳,有些作为 UTC 字符串),将时间转换为 Pandas 时间戳以进行操作,然后需要将时间重新导出为纪元时间戳.问题是,当(并且仅当)DataFrame 包含 UTC 和非 UTC 时间戳的混合时,我在将时间戳转换回 int64 时遇到错误。
这有效:

df1 = pd.DataFrame([{'time':1617217320000}])
df1['time'] = pd.to_datetime(df1['time'], unit='ms')
df1['time'] = df1['time'].values.astype('int64') // 10**9
这样做也是如此:
df2 = pd.DataFrame([{'time':'2021-03-30T18:52:00.000Z'}])
df2['time'] = pd.to_datetime(df2['time'])
df2['time'] = df2['time'].values.astype('int64') // 10**9
但这不会:
df1 = pd.DataFrame([{'time':1617217320000}])
df1['time'] = pd.to_datetime(df1['time'], unit='ms')
df2 = pd.DataFrame([{'time':'2021-03-30T18:52:00.000Z'}])
df2['time'] = pd.to_datetime(df2['time'])
df = df1.append(df2)
df['time'] = df['time'].values.astype('int64') // 10**9

# TypeError: int() argument must be a string, a bytes-like object or a number, not 'Timestamp'
我是否需要以某种方式标准化这些以允许转换工作?

最佳答案

您也可以使用 .value Pandas 的属性Timestamp()类(您的两个值都是实例)( https://pandas.pydata.org/docs/reference/api/pandas.Timestamp.html )将两种类型的时间戳转换为 int。

>>> df['time'] = df.time.apply(lambda x: x.value // 10**9)

>>> df
time
0 1617217320
1 1617130320

关于python - 转换为 int64 时,DataFrame 中的混合时间戳会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66913227/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com