python - Python/Pandas:日期对象转换为多索引中的时间戳
问题描述
有没有办法使用 datetime.date 对象创建 MultiIndex 并且不将它们转换为时间戳?
如果我有以下元组:
travel = [('car', datetime.date(2021, 10, 1)),
('car', datetime.date(2021, 10, 2)),
('car', datetime.date(2021, 10, 3)),
('bus', datetime.date(2021, 10, 1))]
每个元组中的第二项是 datetime.date 对象,我创建了一个多索引:
ind = pd.MultiIndex.from_tuples(travel)
它们被转换为时间戳:
ind[0] = ('car', Timestamp('2021-10-01 00:00:00'))
如果我使用它来创建数据框,则在尝试引用该行时会出现错误:
df = pd.DataFrame(index = ind, columns = ['distance'])
df.loc[('car', datetime.date(2021, 10, 1))]
KeyError: datetime.date(2021, 10, 1)
但是,如果我将其转换为时间戳,则引用没有问题:
df.loc[('car', Timestamp('2021-10-01 00:00:00'))]
distance NaN
Name: (car, 2021-10-01 00:00:00), dtype: object
我尝试如下重新构建索引,但没有运气,因为日期不是唯一值:
dates = [datetime.date(2021, 10, 1),
datetime.date(2021, 10, 2),
datetime.date(2021, 10, 3),
datetime.date(2021, 10, 1)]
df.index = df.index.set_levels([df.index.levels[0], dates])
ValueError: Level values must be unique: [datetime.date(2021, 10, 1), datetime.date(2021, 10, 2), datetime.date(2021, 10, 3), datetime.date(2021, 10, 1)] on level 1
datetime.date 被独立地转换为时间戳,或者我是否使用元组或其他方法创建 MultiIndex。
解决方案
推荐阅读
- c# - 如何制作屏幕共享应用程序
- css - 加载角度组件样式最新
- python - 插入值时如何存储dict的差异?
- encryption - CCCrypt 返回 nil 的最长时间。加密有什么问题
- javascript - API路由控制器中的套接字连接保留先前调用的数据
- postgresql - postgres 立方体欧式距离查询性能问题
- python-3.x - 销毁前一个窗口后如何激活 tkinter 窗口?
- javascript - 我的 javascripts 结果在显示 Javascripts 结果的表单元素上迭代后仅显示一次
- c - 只用掩码改变一些位
- python - 使用 pandas-0.24.2 面临奇怪的问题