2013-08-11 45 views
22

Tôi có khung dữ liệu df1 với nhiều cột và hàng. Ví dụ đơn giản:Tạo khung dữ liệu trống với chỉ mục từ một khung dữ liệu khác

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

Tôi muốn tạo ra một khung dữ liệu rỗng df2 và sau này, thêm các cột mới với kết quả tính toán.

Đối với thời điểm này mã của tôi trông như thế này:

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

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

... thêm hai cột mới:

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

Có/an toàn/cách nhanh hơn bất kỳ tốt hơn để làm điều này? Có thể tạo khung dữ liệu rỗng df2 và chỉ sao chép chỉ mục từ df1 không?

Trả lời

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

Điều này sẽ tạo một DataFrame không có cột nhưng chỉ là chỉ mục và sẽ có cùng chỉ mục như trong df1.

+0

Đó là chỉ số thiết lập tốt hơn như df1.index. copy(); nếu không, df1 và df2 sẽ chia sẻ cùng một đối tượng chỉ mục – waitingkuo

+2

Các chỉ mục không thay đổi chính xác vì lý do này. –

+3

Khi bạn đặt df2.index.name = 'test', chỉ mục của df1 cũng sẽ nhận được tên. – waitingkuo

2

Nó tốt hơn để thiết lập chỉ số như df1.index.copy()

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

Bạn có thể sử dụng df1.indexdf2.index để kiểm tra xem họ là như nhau đối tượng

+5

Không, bạn chỉ cần tạo một bản sao chỉ mục không cần thiết. Các chỉ mục không thay đổi chính xác vì lý do này - để có thể chia sẻ chúng giữa các cấu trúc dữ liệu khác nhau mà không sợ chúng sẽ thay đổi. –

Các vấn đề liên quan