2016-08-03 12 views
2

如何設置數據幀索引有什麼區別?設置索引的方式有何區別

data = [['A', 5], ['B', 6], ['C', 7]] 
df = pd.DataFrame(data=data, columns=['key', 'amount'], index= ['key']) 

我獲得以下錯誤:

Shape of passed values is (2, 3), indices imply (2, 1) 

如果我不按以下方式它的工作確定:

df2 = pd.DataFrame(data=data, columns=['key', 'amount']) 
df2.set_index(['key'], inplace=True) 

是我設置的指標的方式有什麼區別?

+0

你不能爲索引指定一個列,它需要一個索引對象或類似數組的長度與最終的df相同,所以你必須這樣做作爲後期構建步驟 – EdChum

回答

1

在第一種方式:

data = [['A', 5], ['B', 6], ['C', 7]] 
df = pd.DataFrame(data=data, columns=['key', 'amount'], index= ['key']) 

是否指定了索引爲的'key'單個值。換言之,將會有一行標籤爲'key'

在第二種方式:

df2 = pd.DataFrame(data=data, columns=['key', 'amount']) 
df2.set_index(['key'], inplace=True) 

你已經指定了一個名爲'key'列可能包含許多行。您隨後指示df2使其索引等於名爲'key'的整個列。

2

,一方面,pd.Dataframe預計指數是一個數組,將用作指數爲行,例如:

In [17]: data 
Out[17]: [['A', 5], ['B', 6], ['C', 7]] 

In [18]: df = pd.DataFrame(data=data, index=['a', 'b', 'c']) 

In [19]: df 
Out[19]: 
    0 1 
a A 5 
b B 6 
c C 7 

這不是你想達到的目標。

另一方面DataFrame.set_index設置一個(或多個)列到成爲該索引,這是你想要在這種情況下做什麼。

相關問題