2013-05-17 35 views
20

Nói rằng tôi có một bảng dữ liệuXóa tất cả các cột, ngoại trừ một vài python-gấu trúc

1 2 3 4 5 6 .. n 
A x x x x x x .. x 
B x x x x x x .. x 
C x x x x x x .. x 

Và tôi muốn mỏng nó xuống vì vậy mà tôi chỉ có, nói, cột 3 và 5 xóa tất cả các khác và duy trì kết cấu. Làm thế nào tôi có thể làm điều này với gấu trúc? Tôi nghĩ rằng tôi hiểu làm thế nào để xóa một cột duy nhất, nhưng tôi không biết làm thế nào để lưu một vài lựa chọn và xóa tất cả những người khác.

Cảm ơn.

Trả lời

32

Nếu bạn có một danh sách các cột bạn chỉ có thể chọn những:

In [11]: df 
Out[11]: 
    1 2 3 4 5 6 
A x x x x x x 
B x x x x x x 
C x x x x x x 

In [12]: col_list = [3, 5] 

In [13]: df = df[col_list] 

In [14]: df 
Out[14]: 
    3 5 
A x x 
B x x 
C x x 
+0

đó đã làm việc một cách hoàn hảo. CẢM ƠN! – Matt

+0

@andyhayden cách xóa tất cả các cột ngoại trừ cột 'n'th (không sử dụng đặt tên cột), – 3kstc

6

Bạn có thể phân công lại một giá trị mới cho DataFrame của bạn, df:

df = df.loc[:,[3, 5]] 

Chừng nào không có tài liệu tham khảo khác với bản gốc DataFrame, người già DataFrame sẽ được thu gom rác thải.

Lưu ý rằng khi sử dụng df.loc, chỉ mục được chỉ định bởi nhãn. Vì vậy, trên 35 không phải là số thứ tự, chúng đại diện cho tên nhãn của các cột. Nếu bạn muốn chỉ định các cột theo chỉ số thứ tự, hãy sử dụng df.iloc.

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