gpt4 book ai didi

python - 我应该如何使用 Pandas 处理时间序列数据中的重复时间?

转载 作者:行者123 更新时间:2023-11-28 22:27:17 26 4
gpt4 key购买 nike

作为更大数据集的一部分,我从 API 调用返回了以下内容:

{'Time': datetime.datetime(2017, 5, 21, 18, 18, 1,tzinfo=tzutc()), 'Price': '0.052600'}

{'Time': datetime.datetime(2017, 5, 21, 18, 18, 1, tzinfo=tzutc()),'Price': '0.052500'}

理想情况下,我会使用时间戳作为 pandas 数据框的索引,但这似乎失败了,因为在转换为 JSON 时存在重复:

df = df.set_index(pd.to_datetime(df['Timestamp']))
print(new_df.to_json(orient='index'))

ValueError: DataFrame index must be unique for orient='index'.

关于处理这种情况的最佳方法有什么指导吗?扔掉一个数据点?时间不会比秒更精细,并且在那一秒内显然有价格变化。

最佳答案

我认为您可以通过添加 ms by cumcount 来更改重复的日期时间和 to_timedelta :

d = [{'Time': datetime.datetime(2017, 5, 21, 18, 18, 1), 'Price': '0.052600'},
{'Time': datetime.datetime(2017, 5, 21, 18, 18, 1), 'Price': '0.052500'}]
df = pd.DataFrame(d)
print (df)
Price Time
0 0.052600 2017-05-21 18:18:01
1 0.052500 2017-05-21 18:18:01

print (pd.to_timedelta(df.groupby('Time').cumcount(), unit='ms'))
0 00:00:00
1 00:00:00.001000
dtype: timedelta64[ns]

df['Time'] = df['Time'] + pd.to_timedelta(df.groupby('Time').cumcount(), unit='ms')
print (df)
Price Time
0 0.052600 2017-05-21 18:18:01.000
1 0.052500 2017-05-21 18:18:01.001

new_df = df.set_index('Time')
print(new_df.to_json(orient='index'))
{"1495390681000":{"Price":"0.052600"},"1495390681001":{"Price":"0.052500"}}

关于python - 我应该如何使用 Pandas 处理时间序列数据中的重复时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44128600/

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