Làm cách nào để hiển thị tên tất cả các cột trên khung dữ liệu gấu trúc?


127

Tôi có một khung dữ liệu bao gồm hàng trăm cột và tôi cần xem tất cả các tên cột.

Tôi đã làm gì:

In[37]:
data_all2.columns

Đầu ra là:

Out[37]:
Index(['customer_id', 'incoming', 'outgoing', 'awan', 'bank', 'family', 'food',
       'government', 'internet', 'isipulsa',
       ...
       'overdue_3months_feature78', 'overdue_3months_feature79',
       'overdue_3months_feature80', 'overdue_3months_feature81',
       'overdue_3months_feature82', 'overdue_3months_feature83',
       'overdue_3months_feature84', 'overdue_3months_feature85',
       'overdue_3months_feature86', 'loan_overdue_3months_total_y'],
      dtype='object', length=102)

Làm cách nào để hiển thị tất cả các cột, thay vì một danh sách bị cắt ngắn?

Câu trả lời:


196

Bạn có thể đặt các tùy chọn in trên toàn cầu. Tôi nghĩ rằng điều này sẽ làm việc:

Phương pháp 1:

pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)

Phương pháp 2:

pd.options.display.max_columns = None
pd.options.display.max_rows = None

Điều này sẽ cho phép bạn xem tất cả các tên cột và hàng khi bạn đang thực hiện .head(). Không có tên cột nào sẽ bị cắt bớt.


Nếu bạn chỉ muốn xem tên cột, bạn có thể làm:

print(df.columns.tolist())

3
@EEE Không, nó trả lời câu hỏi. Tôi vừa thử nó, nó hiển thị tất cả các cột thay vì một danh sách bị cắt ngắn. Anh ấy không nói trường bị cắt ngắn, anh ấy nói danh sách cột.
rjurney

3
Ahh, bạn nói đúng. Tôi đã sai. Cảm ơn, @rjurney. Và xin lỗi YOLO. Tôi đang làm df.columns thay vì df.head ()! Tôi có nên xóa bình luận không chính xác trước đó của mình không?
EEE

Ư, tôi cung nghi vậy.
rjurney

1
tốt hơn nhiều là đặt một giá trị hữu hạn như 500 nếu không sẽ mất vĩnh viễn để chạy nếu bạn in một khung dữ liệu lớn
Thomas G.

Xin lỗi, nhưng làm thế nào để tắt nó? Hiện tại giải pháp ngu ngốc của tôi chỉ đơn giản là đóng Anaconda và mở lại nó. Chà, có hợp pháp để thoát khỏi nó mà không làm như vậy không?
Chen Lizi

45

Để có được tất cả các tên cột của DataFrame, df_datatrong ví dụ này, bạn chỉ cần sử dụng lệnh df_data.columns.values. Điều này sẽ hiển thị cho bạn một danh sách với tất cả các tên Cột của Khung dữ liệu của bạn

Mã:

df_data=pd.read_csv('../input/data.csv')
print(df_data.columns.values)

Đầu ra:

['PassengerId' 'Survived' 'Pclass' 'Name' 'Sex' 'Age' 'SibSp' 'Parch' 'Ticket' 'Fare' 'Cabin' 'Embarked']

Đây là câu trả lời thực cho câu hỏi này, cảm ơn bạn @ pink.slash
Interlooper

Nếu tôi cũng muốn xem số cột - điều đó có thể không? Df của tôi có 200 cột và tôi muốn sử dụng một phần nhỏ trong số đó, và đã nghĩ rằng tôi có thể sử dụng các số thay vì viết tên từng cột.
Mactilda

10

Trong bảng điều khiển tương tác, thật dễ dàng để thực hiện:

data_all2.columns.tolist()

Hoặc điều này trong một tập lệnh:

print(data_all2.columns.tolist())

6

Điều này sẽ thực hiện thủ thuật. Lưu ý sử dụng display()thay vì in.

with pd.option_context('display.max_rows', 5, 'display.max_columns', None): 
    display(my_df)

BIÊN TẬP:

Việc sử dụng displaylà bắt buộc vì pd.option_contextcài đặt chỉ áp dụng cho displayvà không áp dụng cho print.


Tôi thích withtừ khóa chỉ áp dụng tùy chọn cho khối bên dưới. Tuy nhiên nó hoạt động tốt với print(). Tại sao tôi cần sử dụng display()thay vì print()?
Vincent Agami

@VincentAgami Việc sử dụng hiển thị là bắt buộc vì cài đặt pd.option_context chỉ áp dụng cho hiển thị chứ không phải để in. Tôi đã cập nhật câu trả lời để bao gồm thông tin này.
nico

4

Những gì làm việc cho tôi là như sau:

pd.options.display.max_seq_items = None

Bạn cũng có thể đặt nó thành một số nguyên lớn hơn số cột của bạn.


3

Cách dễ nhất mà tôi đã tìm thấy chỉ là

list(df.columns)

Cá nhân tôi không muốn thay đổi hình cầu, tôi không muốn xem tất cả các tên cột thường xuyên.


2

Để nhận được tất cả tên cột, bạn có thể lặp lại data_all2.columns.

columns = data_all2.columns
for col in columns:
    print col

Bạn sẽ nhận được tất cả các tên cột. Hoặc bạn có thể lưu trữ tất cả các tên cột vào một biến danh sách khác và sau đó in danh sách.


1

Nếu bạn chỉ muốn xem tất cả các cột, bạn có thể làm điều gì đó thuộc loại này để sửa chữa nhanh

cols = data_all2.columns

bây giờ cols sẽ hoạt động như một biến lặp lại có thể được lập chỉ mục. ví dụ

cols[11:20]

1

Một giải pháp nhanh chóng và bẩn thỉu sẽ là chuyển đổi nó thành một chuỗi

print('\t'.join(data_all2.columns))

sẽ khiến tất cả chúng được in ra tách biệt bằng các tab Tất nhiên, hãy lưu ý rằng với 102 tên, tất cả chúng đều khá dài, điều này sẽ hơi khó đọc qua



1

bạn có thể thử cái này

pd.pandas.set_option('display.max_columns', None)

1

Không phải là một câu trả lời thông thường, nhưng tôi đoán bạn có thể chuyển khung dữ liệu để xem các hàng thay vì các cột. Tôi sử dụng điều này vì tôi thấy việc nhìn vào các hàng 'trực quan' hơn là nhìn vào các cột:

data_all2.T

Điều này sẽ cho phép bạn xem tất cả các hàng. Hành động này không phải là vĩnh viễn , nó chỉ cho phép bạn xem phiên bản hoán đổi của khung dữ liệu.

Nếu các hàng vẫn bị cắt bớt, chỉ cần sử dụng print(data_all2.T)để xem mọi thứ.


Không phải là một câu trả lời thông thường, nhưng tôi đoán bạn có thể chuyển khung dữ liệu để xem các hàng thay vì các cột. Tất cả những gì họ muốn là tên cột, không? Nếu các hàng vẫn bị cắt ngắn, chỉ cần sử dụng print (data_all2.T) để xem mọi thứ. Việc in kết quả sẽ giải quyết vấn đề như thế nào? Bạn vẫn chưa in nó?
AMC

-1

Đây là cách của tôi. Tôi không bao giờ cố gắng cho hàng trăm cột. Nhưng tôi nghĩ nó hoạt động

your_dataframe.info()

-1

Tôi biết đó là một sự lặp lại nhưng tôi luôn kết thúc việc sao chép dán và sửa đổi câu trả lời của YOLO:

pd.set_option('display.max_columns', 500)
pd.set_option('display.max_rows', 500)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.