当前位置:  开发笔记 > 编程语言 > 正文

使用列表与范围的.ix索引的意外结果

如何解决《使用列表与范围的.ix索引的意外结果》经验,为你挑选了0个好方法。

有人可以向我解释这种行为吗?

import pandas as pd

dates = pd.date_range('1/1/2000', periods=8)
df = pd.DataFrame(np.random.randn(8, 4), index=dates, columns=['A', 'B', 'C', 'D'])

df.ix['2000-01-01':'2000-01-02', ['A', 'C']]

## Output:
                   A         C
2000-01-01  0.224944 -0.689382
2000-01-02 -0.824735 -0.805512

df.ix[['2000-01-01', '2000-01-02'], ['A', 'C']]

## Output:
             A   C
2000-01-01 NaN NaN
2000-01-02 NaN NaN

我期待两个索引操作都返回相同的(第一个)结果.

然后我得到了它:

from datetime import datetime

df.loc[[datetime(2000, 1, 1), datetime(2000, 1, 5)], ['A','C']]

## Output
                   A         C
2000-01-01  0.224944 -0.689382
2000-01-05 -0.393747  0.462126

现在,我不知道大熊猫的内部以及为什么它在给定范围时隐式地将字符串转换为日期但是在给定列表时没有,但我的猜测是范围清楚地表明我们的意思是具有序数性质的对象所以大熊猫也许检查索引,看到它是一个日期时间,因此将字符串解析为日期.

但问题就变成了,为什么当我们提供单个字符串时它会做正确的事情?

df.loc['2000-01-01', ['A','C']]

## Output:
A    0.224944
C   -0.689382
Name: 2000-01-01 00:00:00, dtype: float64

是否存在性能问题,在给定列表时不尝试转换多个值?其他一些设计决定?

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有