2015-02-17 246 views
1

假設我有一個DataFrame df在第0到99行的熊貓中,我想只保留列表x中的那些行dfpandas:將列表轉換爲int64index

假設列表x有一些值,如[3, 10, 71]基於一些可以改變的編程邏輯。

如果我然後嘗試訪問df[df.index[x],'SomeColName']我通常會收到一個錯誤,說TypeError: unhashable type: 'Int64Index'

如何將list轉換爲Int64Index類型?

我正在使用Python 3.4。

回答

1

沒有必要到列表轉換爲這裏的索引 - 如果你想訪問你可以使用特定的行和列iloc

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

這將在列3,3回報您的數據框的觀點,10和'SomeColName'列中的71。

如果你想擺脫所有其他行和列,你可以重新分配名稱df到這個視圖。

書寫df[df.index[x],df.index[x]實際上試圖找到名爲df.index[x]'SomeColName'的兩列。由於列名需要可散列,當Pandas尋找df.index[x](索引對象是可變的)時會引發錯誤。

+0

實際上,在'df.loc [[3,10,71],'SomeColName']'你的回答將'SomeColName'中的值標記爲'3,10和71'時返回給我,而不是行'3,10和71'本身 – uday 2015-02-17 22:31:50

+0

啊,在這種情況下,你需要'iloc'(而不是'loc') - 我已經編輯過了。 – 2015-02-17 22:32:30

+0

是的,它現在可以工作!謝謝。 – uday 2015-02-17 22:33:35