1

谁能告诉我为什么 df['2005-5-31'] 触发 KeyError 异常?

rng = pd.date_range('2005', '2012', freq='M')
df = pd.DataFrame(randn(len(rng), 3), rng, ['X', 'Y', 'Z'])
df.head()

# works
df.ix['2005-5-31']
df['2005-5-31':'2005-5-31']

# Gives KeyError: u'no item named 2005-5-31'
df['2005-5-31']

使用 df['2000-01-01'] 遵循代码有效。

#multiple rows on a single date
rng = pd.date_range('2000-01-01', '2000-01-3', freq='8H')
df = pd.DataFrame(randn(len(rng), 3), rng, ['X', 'Y', 'Z'])

# works
df['2000-01-01']

                           X    Y   Z
2000-01-01 00:00:00 -0.227981    1.927932   -0.518947
2000-01-01 08:00:00  0.486063   -1.255186    0.375075
2000-01-01 16:00:00 -2.313950    0.654384    1.111493
4

2 回答 2

1

df['2005-5-31']是按列选择,但您没有列名2005-5-31

df['X']工作,因为你有一个列名x

编辑

原因df['2005-5-31':'2005-5-31']是按索引而不是按列选择,因为在列上进行切片选择没有意义。

有关更多信息,请查看此处

于 2013-05-08T18:01:30.413 回答
1

df['2005-5-31']返回名为:2005-5-31 的列。您的列名为 X、Y、Z。而且因为您没有日期列,所以它会给您一个错误!

现在该.ix[]方法有效,因为它最多需要两个输入,第一个输入是行索引。你有一行索引'2005-5-31',所以它可以工作!

于 2013-05-08T18:04:39.450 回答