在Pandas中使用带有元组索引的DataFrame.ix

kuz*_*roo 3 python dataframe pandas

我有一堆使用元组作为索引的Pandas代码.我最近遇到了访问DataFrame的单个元素的需要DataFrame.ix,这让元组感到困惑.它似乎认为我的元组是我想要访问的一系列键,而不是我想要访问的单个键(恰好是一个序列).如何提取元组是关键字的单个行?

也许这是一个不在Pandas索引中使用序列的警示故事,但在我的情况下,为时已晚.

import string, pandas as pd, numpy as np

bar = pd.DataFrame(np.random.random((8,2)))
bar.columns = ['col1', 'col2']
bar.index = list(string.ascii_lowercase)[:8]
print bar
print bar.iloc[0].name
print bar.ix[bar.iloc[0].name]

bar.index = [tuple(list(string.ascii_lowercase)[i:i+3]) for i in range(8)]
print bar.iloc[0].name
print bar.ix[bar.iloc[0].name] # Fails with `KeyError: 'a'`
Run Code Online (Sandbox Code Playgroud)

chr*_*isb 6

您可以将元组包装在列表中以使其工作.

In [17]: bar.ix[[bar.iloc[0].name]]
Out[17]: 
               col1      col2
(a, b, c)  0.216689  0.262511
Run Code Online (Sandbox Code Playgroud)