【问题标题】:How to use index in pandas data frame?如何在熊猫数据框中使用索引?
【发布时间】:2014-07-11 12:03:09
【问题描述】:

我使用数据框中的三列进行索引:

df = df.set_index(['col1','col2','col3'])

然后我尝试获取与特定索引对应的行。我尝试了很多不同的方法:

x = df.loc[(123,456,789)]

x = df.ix[(123,456,789)]

x = df.loc[123,456,789]

x = df.ix[123,456,789]

这些选项都不起作用。我得到的错误信息是:

raise e1
KeyError: 'MultiIndex lexsort depth 0, key was length 3'

我检查了索引的使用值是否存在:

inds = []
for ind in df.index:
    inds.append(ind)

if (123,456,789) in inds:
    print 'in'
else:
    print 'out'

结果我得到in(所以,这个索引的使用值存在)。我做错了什么?

【问题讨论】:

    标签: python pandas indexing dataframe


    【解决方案1】:

    对 df 进行排序后,所有 loc/ix 方法都应该可以工作。

    df = df.set_index(['col1','col2','col3'])
    df.sort(inplace=True)
    

    【讨论】:

    • 我应该在索引之前还是之后对数据框进行排序?我应该如何对其进行排序(我应该使用哪一列进行排序)?
    • 设置索引后,使用上面的索引对数据框进行排序。排序将使MultiIndex lexsort depth(在错误消息中)从 0 变为 3。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-10
    • 2013-08-19
    • 2020-03-19
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 2014-10-11
    相关资源
    最近更新 更多