我有一堆Pandas代码使用元组作为索引。我最近遇到了需要使用
也许这是一个警示故事,不要在 Pandas 索引中使用序列,但在我的情况下,已经太晚了。
DataFrame.ix
访问DataFrame的单个元素,但这些元素用元组表示时出现了混淆。它似乎认为我的元组是我想要访问的键序列,而不是一个我想要访问的单个键(恰好是一个序列)。如何提取一个以元组为键的单个行?也许这是一个警示故事,不要在 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'`
ix
的那个,因为它更符合所问问题的要求。但这两种方案中是否有任何一种更受欢迎? - kuzzoorooxs
。索引器(ix
、iloc
、loc
)可以做更多的事情,但由于元组键和 MultiIndex 选择之间的语法歧义,它可能更容易出错。 - chrisb