Ich habe Panel anstelle von Datenrahmen mit Multi-Level-Indizierung verwendet, weil sie für große Datensätze schneller zu sein scheinen. Aber ich gehe jetzt zum Midx-Framework über. Mit Panel, kann ich dies ganz einfach:Python Pandas mehrstufige Indizierung - Hinzufügen neuer Spalten
import pandas as pd
pan = pd.Panel(np.random.randn(3,5,2),items=['p1','p2','p3'],minor_axis=['a','b'])
Dann fügen Sie ein neues Element:
pan['p4'] = pd.DataFrame(np.random.randn(10,2),columns=['a','b'])
Aber mit MIDX:
cols = [['p1','p2','p3'],['a','b']]
idx = pd.MultiIndex.from_product(cols)
df_midx = pd.DataFrame(np.random.randn(10,6),columns=idx)
Dies gibt einen Fehler zurück:
df_midx['p4'] = pd.DataFrame(np.random.randn(10,2),columns=['a','b'])
ValueError: Wrong number of items passed 2, placement implies 1
ty dunkel. Was ist der Zweck von 'p4 = pd.concat ([Samp], Schlüssel = ['p4'], Achse = 1)'? Gibt es keine Möglichkeit, den ndf-Schritt zu kombinieren? – MJS
@MJS überprüfen Sie die Bearbeitung – Dark
das ist toll, vielen Dank! – MJS