Python 数据帧标签选择

Python 数据帧标签选择,python,dataframe,pandas,Python,Dataframe,Pandas,有人能告诉我为什么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

有人能告诉我为什么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

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

df['X']
有效,因为您有一个列名
X

编辑 之所以
df['2005-5-31':'2005-5-31']
是按索引选择,而不是按列选择,是因为对列进行切片选择没有意义


有关详细信息,请参阅

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


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

请发布您的全部回溯错误谢谢大家!我终于解决了这个问题。如果索引列中只有一个'2005-5-31',则使用df['2005-5-31']生成KeyError异常。如果索引列中有多个2005-5-31行,则使用df['2005-5-31']返回这些行。