假设我在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。
答案 0 :(得分:1)
此处无需将列表转换为索引 - 如果要访问特定的行和列,可以使用iloc
:
df.iloc[[3, 10, 71], 'SomeColName']
这将返回“&Col 39; SomeColName'”栏中第3,10和71行的DataFrame视图。
如果您想要删除所有其他行和列,可以将名称df
重新分配给此视图。
写df[df.index[x],df.index[x]
实际上会尝试查找名为df.index[x]
和'SomeColName'
的两列。由于列名需要是可清除的,因此当Pandas查找df.index[x]
时(索引对象是可变的)会引发错误。