2013-08-11 16 views
22

Ich habe einen Datenrahmen df1 mit mehreren Spalten und Zeilen. Einfaches Beispiel:Erstellen Sie einen leeren Datenrahmen mit Index von einem anderen Datenrahmen

TIME T1 T2 
     1 10 100 
     2 20 200 
     3 30 300 

würde Ich mag einen leeren Datenrahmen df2 und später, fügen Sie neue Spalten mit den Berechnungsergebnissen erstellen.

Für diesen Moment sieht mein Code wie folgt aus:

 df1=pd.read_csv("1.txt",index_col="TIME") 

    df2=df1.copy()[[]] #copy df1 and erase all columns 

... zwei neue Spalten:

 df2["results1"],df2["results2"]=df1["T1"]*df["T2"]*3,df1["T2"]+100 

Gibt es eine bessere/sicherer/schneller Weg, dies zu tun? Ist es möglich, einen leeren Datenrahmen df2 zu erstellen und nur den Index von df1 zu kopieren?

Antwort

33
df2 = pd.DataFrame(index=df1.index) 

Dies erstellt einen DataFrame ohne Spalten, sondern nur einen Index, und es wird der gleiche Index wie in der DF1 sein.

+0

Es ist besser, Set-Index als df1.index. Kopieren(); andernfalls teilen df1 und df2 das gleiche Indexobjekt – waitingkuo

+2

Indizes sind genau aus diesem Grund unveränderlich. –

+3

Während Sie df2.index.name = 'test' setzen, erhält der Index von df1 auch den Namen. – waitingkuo

2

Es ist besser als Index df1.index.copy einzustellen()

df2 = pd.DataFrame(index=df1.index.copy()) 

Sie können df1.indexdf2.index ist zu prüfen, ob sie das gleiche Objekt sind

+5

Es ist nicht, du einfach Erstellen Sie eine unnötige Kopie eines Indexes. Aus diesem Grund sind Indizes unveränderlich - um sie unter verschiedenen Datenstrukturen austauschen zu können, ohne befürchten zu müssen, dass sie sich ändern. –

Verwandte Themen