有人能告诉我为什么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
答案 0 :(得分:1)
df['2005-5-31']
是按列选择,但您没有列名2005-5-31
。
df['X']
有效,因为您的列名为x
df['2005-5-31':'2005-5-31']
选择索引但不是列的原因是因为在列上进行切片选择没有意义。
有关详细信息,请查看here
答案 1 :(得分:1)
df['2005-5-31']
返回名为:2005-5-31的列。您的列名为X,Y,Z。而且因为你没有日期栏,所以它给你一个错误!
现在.ix[]
方法有效,因为它最多需要两个输入,第一个输入是行索引。你有一行索引'2005-5-31'
,所以它的工作原理!