2017-11-14 3 views
0

Nach der Vorbereitung der Datenwie Pandas Datenrahmen Multiindex im Konstruktor

import pandas as pd 

_indexcols = ['key1', 'key2'] 
_columns = ['key1', 'key2', 'data1', 'data2'] 

_data = [] 
_data.append(['k11', 'k12', 'd11', 'd12']) 
_data.append(['k21', 'k22', 'd21', 'd22']) 

Ich kann dies tun

_df = pd.DataFrame(_data, columns=_columns) 
_df = _df.set_index(keys=_indexcols) 

Aber nicht diese einzustellen.

_df = pd.DataFrame(_data, columns=_columns, index=_indexcols) 

Warum?

Wie definiere ich die Indexmarken so, dass sie sofort akzeptiert werden?

Antwort

0

Der Datenrahmenkonstruktor erstellt zuerst den Index und weist die Daten dann an zweiter Stelle zu. Sie können also nicht früher auf die Daten zugreifen, um sie dem Index zuzuordnen.

Aber wenn Sie sich für den Ansatz nur Konstruktor suchen und nicht wollen, set_index Sie von numpy und pd.MultiIndex

temp = np.array(_data) 
idx = pd.MultiIndex.from_arrays(temp[:,:2]) 
_df = pd.DataFrame(temp[:,2:],columns=_columns[2:],index =idx) 
 
     data1 data2 
k11 k21 d11 d12 
k12 k22 d21 d22 
machen
Verwandte Themen