gpt4 book ai didi

python - Pandas 0.15.2 MultiIndex 与 0.14.1(datetime.date 与 pandas.tslib.Timestamp)

转载 作者:太空宇宙 更新时间:2023-11-03 17:52:26 24 4
gpt4 key购买 nike

从 Pandas 0.14.1 升级到 0.15.2 时,我的代码出现了中断,我将其追溯到 MultiIndex 分配,现在返回 pandas.tslib.Timestamp,而之前它是日期时间.日期。

还有人经历过类似的事情吗?这是一个理想的功能,还是 0.15.2 中的一个错误?有什么建议的修复方法吗?

i = [dt.date(2015,1,1), dt.date(2015,1,2), dt.date(2015,1,3)]
idx = pd.MultiIndex.from_product([['a', 'b'], i])

>>> idx
MultiIndex(levels=[[u'a', u'b'], [2015-01-01 00:00:00, 2015-01-02 00:00:00, 2015-01-03 00:00:00]],
labels=[[0, 0, 0, 1, 1, 1], [0, 1, 2, 0, 1, 2]])

>>> type(idx[0][1])
pandas.tslib.Timestamp

>>> idx.levels[1]
<class 'pandas.tseries.index.DatetimeIndex'>
[2012-11-23, ..., 2015-03-06]
Length: 834, Freq: None, Timezone: None

>>> type(idx.levels[1][0])
Out[29]: pandas.tslib.Timestamp

运行此语句时出现以下错误:

df2.merge(df, left_on=['identifier', 'date'],
right_index=True,
how='left',
suffixes=['', '_dup'])

File "/Users/user4589964/anaconda/envs/madrone_dev/lib/python2.7/site-packages/pandas/core/frame.py", line 3919, in merge
suffixes=suffixes, copy=copy)
File "/Users/user4589964/anaconda/envs/madrone_dev/lib/python2.7/site-packages/pandas/tools/merge.py", line 39, in merge
return op.get_result()
File "/Users/user4589964/anaconda/envs/madrone_dev/lib/python2.7/site-packages/pandas/tools/merge.py", line 187, in get_result
join_index, left_indexer, right_indexer = self._get_join_info()
File "/Users/user4589964/anaconda/envs/madrone_dev/lib/python2.7/site-packages/pandas/tools/merge.py", line 264, in _get_join_info
sort=self.sort)
File "/Users/user4589964/anaconda/envs/madrone_dev/lib/python2.7/site-packages/pandas/tools/merge.py", line 582, in _left_join_on_index
_get_multiindex_indexer(join_keys, right_ax, sort=sort)
File "/Users/user4589964/anaconda/envs/madrone_dev/lib/python2.7/site-packages/pandas/tools/merge.py", line 542, in _get_multiindex_indexer
llab, rlab, count = _factorize_keys(level, key, sort=False)
File "/Users/user4589964/anaconda/envs/madrone_dev/lib/python2.7/site-packages/pandas/tools/merge.py", line 622, in _factorize_keys
llab = rizer.factorize(lk)
TypeError: Argument 'values' has incorrect type (expected numpy.ndarray, got Index)

最佳答案

这是索引构建中的一个错误,请参阅 here

以下是如何使用实际 datetime.date 对象的示例

In [8]: pd.MultiIndex.from_arrays([Index([datetime.date(2013,1,1)]),['a']])
Out[8]:
MultiIndex(levels=[[2013-01-01], [u'a']],
labels=[[0], [0]])

请记住,datetime.date 实际上是二等公民,因此将表示为 object dtypes,因此效率不高。您通常应该简单地使用时间戳

关于python - Pandas 0.15.2 MultiIndex 与 0.14.1(datetime.date 与 pandas.tslib.Timestamp),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28936080/

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