2016-07-07 8 views
1

Der Schwenk Code:Pandas Datenrahmen nach Dreh umformen

result = pandas.pivot_table(result, values=['value'], index=['index'], columns=['columns'], fill_value=0) 

Das Ergebnis:

 value value value 
columns col1 col2 col3  
index 
idx1 14  1  1 
idx2 2  0  1 
idx3 6  0  0 

Ich habe versucht:

result.columns = result.columns.get_level_values(1) 

Dann habe ich dieses:

columns col1 col2 col3 
index 
idx1 14  1  1 
idx2 2  0  1 
idx3 6  0  0 

Eigentlich, was ich möchte, ist dieses:

index col1 col2 col3 
idx1 14  1  1 
idx2 2  0  1 
idx3 6  0  0 

Gibt es das überhaupt zu erreichen? Hilfe wird wirklich geschätzt. Vielen Dank im Voraus.

+1

Sorry, stöhnen Sie über den 'index' Namen? Sie können 'df.index.name = None' machen, um es zu entfernen – EdChum

+0

eigentlich möchte ich, dass der 'index' bleibt, aber die 'columns' (der Name der Spalten) verschwindet – Leo

+1

Sie können' df.columns.name = None' – EdChum

Antwort

2

Sie entfernen müssen index name von rename_axis (neu in pandas0.18.0):

df = df.rename_axis(None) 

Wenn Bedarf auch columns name entfernen, verwenden Sie:

df = df.rename_axis(None, axis=1) 

Wenn ältere Version von Pandas verwenden, zu verwenden:

df.columns.name = None 
df.index.name = None 

Probe (wenn [] von pivot_table entfernen, werden Sie Multiindex aus Spalten entfernen):

print (result) 
    index columns value 
0  1 Toys  5 
1  2 Toys  6 
2  2 Cars  7 
3  1 Toys  2 
4  1 Cars  9 

print (pd.pivot_table(result, index='index',columns='columns',values='value', fill_value=0) 
     .rename_axis(None) 
     .rename_axis(None, axis=1)) 

    Cars Toys 
1  9 3.5 
2  7 6.0   

Wenn Gebrauch [] erhalten:

result = pd.pivot_table(result, values=['value'], index=['index'], columns=['columns'], fill_value=0) 
      .rename_axis(None) 
      .rename_axis((None,None), axis=1) 
print (result)   
    value  
    Cars Toys 
1  9 3.5 
2  7 6.0  
+1

Wenn '' '' '' 'pivot_table' 'entfernt wird, ist die Ausgabe ohne' Multiindex' in Spalten, daher ist 'result.columns = result.columns.get_level_values ​​(1)' nicht notwendig. Bitte überprüfen Sie die Bearbeitung. – jezrael

1

diesen Datenrahmen vor:

results = pd.DataFrame(
    [ 
     [14, 1, 1], 
     [2, 0, 1], 
     [6, 0, 0] 
    ], 
    pd.Index(['idx1', 'idx2', 'idx3'], name='index'), 
    pd.MultiIndex.from_product([['value'], ['col1', 'col2', 'col3']], names=[None, 'columns']) 
) 

print results 

     value   
columns col1 col2 col3 
index     
idx1  14 1 1 
idx2  2 0 1 
idx3  6 0 0 

Dann alles, was Sie Notwendigkeit ist:

print results.value.rename_axis(None, 1) # <---- Solution 

     col1 col2 col3 
index     
idx1  14  1  1 
idx2  2  0  1 
idx3  6  0  0