2016-12-30 123 views
3

我有一個如下所示的數據集。熊貓,樞軸錯誤 - 無法用空鍵標記索引

ID  Product date 
1  A  01.01.2015 
1  B  01.01.2015 
1  C  01.03.2015 

一個人可以在同一天以上的產品,我想通過ID,日期調換,並得到產品的價值。

ID日期COL1 COL2

1  01.01.2015 A  B 
1  01.03.2015 C 

在SAS I做象下面這樣:

proc transpose data = data; 
    by ID Date; 
    var product 
run; 

在熊貓我用下面的代碼。

data_b = data_a.pivot(index = ['patnum','day'], values = ['drug']).add_prefix('p') 

這是給出以下錯誤。

ValueError: cannot label index with a null key 

爲什麼我會出現以上錯誤?我怎樣才能避免它?

我在Pandas中使用最新版本。

回答

1

您需要創建另一列,以確定每個日期內的行幫你pivot

df.assign(Count = df.groupby('date').cumcount()).pivot("date", "Count", "Product") 

# Count 0  1 
#date  
#01.01.2015 A  B 
#01.03.2015 C None 
2

使用groupby

list對象

df.groupby(['ID', 'date'])['Product'].apply(list) 

ID date  
1 01.01.2015 [A, B] 
    01.03.2015  [C] 
Name: Product, dtype: object 

一個數據幀

df.groupby(['ID', 'date'])['Product'].apply(list).apply(pd.Series) 

       0 1 
ID date    
1 01.01.2015 A B 
    01.03.2015 C NaN 
+1

感謝您的代碼。但爲什麼我會得到上述錯誤?什麼不能用空值鍵標記索引意味着什麼? – Haritha

-1

一年後我有同樣的問題,代碼重排以下面解決了這個問題:

pivot_df = pd.pivot_table(df, index =['coulmn1','coulmn2']) 

是新來的Python,我不知道爲什麼這個工程,我也不知道,如果它的好或壞編碼,也不知道我們都得到錯誤信息的原因...

+0

我得到了這個downvoted,任何人都可以解釋爲什麼?看起來有點不公平,沒有理由,失去了1/4的點哈哈。謝謝 – scatter