2013-08-11 12 views
22

Birden çok sütun ve satır içeren bir df1 veri çerçevem ​​var. Basit bir örnek:Başka bir veri çerçevesinden dizin içeren boş bir veri çerçevesi oluşturun

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

Ben, boş bir veri çerçevesi df2 ve daha sonra oluşturmak ister hesaplama sonuçları ile yeni sütunlar eklemek istiyorum. Bu an için

benim kod şöyle görünür:

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

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

... iki yeni sütun ekleme:

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

bunu yapmak için daha iyi/daha güvenli/hızlı bir yolu var mı? Boş bir veri çerçevesi df2 oluşturmak ve sadece df1'den dizin kopyalamak mümkün mü?

cevap

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

Bu, sütun içermeyen bir DataFrame oluşturacak, yalnızca bir dizin oluşturacaktır ve df1 ile aynı dizin olacaktır.

+0

Bu df1.index olarak daha iyi ayarlanmış endeks var olup olmadığını kontrol etmek için df2.index olduğunu kullanabilirsiniz

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

df1.index.copy olarak index() ayarlamanın daha iyi. kopya(); aksi halde, df1 ve df2 aynı indeks nesnesini paylaşır – waitingkuo

+2

Dizinler bu nedenle tam olarak değişmez. –

+3

df2.index.name = 'test' ayarı yapılırken, df1'in indeksi de adı alacak. – waitingkuo

2

It df1.index aynı nesne

+5

df1.index.copy()' yi kullanmanız daha iyi değil, sadece bir indeksin gereksiz bir kopyasını çıkarmak. Endeksler bu nedenle tam olarak değişmezler - değişeceklerinden korkmadan bunları farklı veri yapıları arasında paylaşabilmek. –

İlgili konular