2017-10-02 3 views
1

Hier ist meine DatenIndex._join_level auf nicht-eindeutigen Index implementiert nicht

meine Datenrahmen Name ist tab

 user_id  len 
     barcode 
0  1   490 
1  2   71 
2  3   1 
3  5   1 

Das ist mein Code

tab = tab[tab[('len', 'barcode')]] 

tab.columns ist

MultiIndex(levels=[['len', 'user_id'], ['barcode', '']], 
      labels=[[1, 0], [1, 0]]) 

Dieser Code auf meinem Routine-Notebook und funktioniert mehr als 10 Mal, aber es funktioniert nicht mehr

+1

Was ist 'df.columns'? – jezrael

+0

Bearbeitet in Frage –

Antwort

1

Ich denke, es ist ein Problem, Ihre zweite Ebene Name ist leere Zeichenfolge.

So brauchen:

a = tab[('len', '')] 
print (a) 
0 490 
1  71 
2  1 
3  1 
Name: (len,), dtype: int64 

Wenn Sie alle leeren Zeichenfolgen in Spalten Namen ersetzen möchten:

tab = tab.rename(columns={'':'b'}) 
a = tab[('len', 'b')] 
print (a) 
0 490 
1  71 
2  1 
3  1 
Name: (len, b), dtype: int64 

Aber besser ist [] entfernen entfernen Multiindex in Spalten:

tab = pd.pivot_table(barcode,index="user_id",values="barcode",‌​aggfunc='size') 
tab = tab.reset_index() 
+0

Es kommt von schwenken 'tab = pd.pivot_table (Barcode, index = [" Benutzer_id "], Werte = [" Barcode "], aggfunc = [len])' 'tab = tab.reset_index() ' –

+0

Ja, jetzt verstehe ich. Überprüfen Sie die letzte Bearbeitung meiner Antwort. – jezrael

+1

Ok, nette Erklärung, es ist hilfreich –