【问题标题】:pandas: convert list to int64index熊猫:将列表转换为 int64index
【发布时间】:2015-02-17 22:12:18
【问题描述】:

假设我在 pandas 中有一个 DataFrame df,第 0 到 99 行,我只想保留 df 列表中 x 中的那些行。

假设列表x 有一些像[3, 10, 71] 这样的值,基于一些可以改变的编程逻辑。

如果我随后尝试访问df[df.index[x],'SomeColName'],我通常会收到错误消息TypeError: unhashable type: 'Int64Index'

如何将list 转换为Int64Index 类型?

我正在使用 Python 3.4。

【问题讨论】:

    标签: python list python-3.x pandas dataframe


    【解决方案1】:

    这里不需要将列表转换为索引 - 如果你想访问特定的行和列,你可以使用iloc

    df.iloc[[3, 10, 71], 'SomeColName']
    

    这将在“SomeColName”列的第 3、10 和 71 行返回 DataFrame 的视图。

    如果您想删除所有其他行和列,可以将名称 df 重新分配给此视图。

    df[df.index[x],df.index[x]实际上试图找到两个名为df.index[x]'SomeColName'的列。由于列名需要是可散列的,当 Pandas 查找 df.index[x] 时会引发错误(索引对象是可变的)。

    【讨论】:

    • 实际上,在df.loc[[3, 10, 71], 'SomeColName'] 中,当行被标记为3, 10, and 71 而不是行3, 10, and 71 本身时,您的答案会返回SomeColName 中的值
    • 啊,在这种情况下,您需要iloc(而不是loc)-我已经编辑了。
    猜你喜欢
    • 2017-04-08
    • 1970-01-01
    • 2019-10-12
    • 2014-03-05
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 2017-08-26
    相关资源
    最近更新 更多