Jak wyświetlić wszystkie nazwy kolumn w ramce danych pandy?


128

Mam ramkę danych, która składa się z setek kolumn i muszę zobaczyć wszystkie nazwy kolumn.

Co ja zrobiłem:

In[37]:
data_all2.columns

Wynik to:

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)

Jak wyświetlić wszystkie kolumny zamiast skróconej listy?

Odpowiedzi:


197

Możesz globalnie ustawić opcje drukowania. Myślę, że to powinno działać:

Metoda 1:

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

Metoda 2:

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

Umożliwi to wyświetlenie wszystkich nazw kolumn i wierszy podczas wykonywania .head(). Żadna nazwa kolumny nie zostanie obcięta.


Jeśli chcesz tylko zobaczyć nazwy kolumn, możesz to zrobić:

print(df.columns.tolist())

3
@EEE Nie, to odpowiada na pytanie. Właśnie spróbowałem, wyświetla wszystkie kolumny zamiast skróconej listy. Nie powiedział pola obciętego, powiedział listę kolumn.
rjurney

3
Ahh, masz rację. Myliłem się. Dzięki, @rjurney. Przepraszam, YOLO. Robiłem df.columns zamiast df.head ()! Czy powinienem usunąć mój nieprawidłowy wcześniejszy komentarz?
EEE

Tak, tak myślę.
rjurney

1
o wiele lepiej jest ustawić skończoną wartość, taką jak 500, w przeciwnym razie drukowanie dużej ramki danych potrwa wieczność
Thomas G.

Przepraszam, ale jak to wyłączyć? Obecnie moim głupim rozwiązaniem jest po prostu zamknięcie Anacondy i ponowne otwarcie. Cóż, czy jest uzasadnione, aby się z tego wydostać bez tego?
Chen Lizi

45

Aby uzyskać wszystkie nazwy kolumn DataFrame, df_dataw tym przykładzie wystarczy użyć polecenia df_data.columns.values. Spowoduje to wyświetlenie listy ze wszystkimi nazwami kolumn Twojej Dataframe

Kod:

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

Wynik:

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

To jest prawdziwa odpowiedź na to pytanie, dziękuję @ pink.slash
Interlooper

Jeśli chciałbym również zobaczyć numery kolumn - czy to możliwe? Mój plik df ma 200 kolumn i chciałbym użyć ich części, i pomyślałem, że mógłbym użyć liczb zamiast pisać nazwy każdej kolumny.
Mactilda,

11

W konsoli interaktywnej łatwo to zrobić:

data_all2.columns.tolist()

Lub to w skrypcie:

print(data_all2.columns.tolist())

6

To wystarczy. Zwróć uwagę na użycie display()zamiast print.

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

EDYTOWAĆ:

Użycie displayjest wymagane, ponieważ pd.option_contextustawienia mają zastosowanie tylko do, displaya nie do print.


Podoba mi się, że withsłowo kluczowe stosuje tę opcję tylko do poniższego bloku. Jednak działa dobrze z print(). Dlaczego miałbym używać display()zamiast print()?
Vincent Agami

@VincentAgami Użycie wyświetlacza jest wymagane, ponieważ ustawienia pd.option_context dotyczą tylko wyświetlania, a nie drukowania. Zaktualizowałem odpowiedź, aby zawierała te informacje.
nico

5

U mnie zadziałało:

pd.options.display.max_seq_items = None

Możesz również ustawić liczbę całkowitą większą niż liczba kolumn.


3

Najłatwiejszy sposób, jaki znalazłem, to po prostu

list(df.columns)

Osobiście nie chciałbym zmieniać globali, nie jest tak często, że chcę zobaczyć wszystkie nazwy kolumn.


2

Aby uzyskać wszystkie nazwy kolumn, możesz iterować po data_all2.columns.

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

Otrzymasz wszystkie nazwy kolumn. Lub możesz zapisać wszystkie nazwy kolumn w innej zmiennej listy, a następnie wydrukować listę.


1

Jeśli chcesz tylko zobaczyć wszystkie kolumny, możesz zrobić coś takiego jako szybką naprawę

cols = data_all2.columns

teraz cols będą zachowywać się jak zmienna iteracyjna, która może być indeksowana. na przykład

cols[11:20]

1

Szybkim i brudnym rozwiązaniem byłoby przekonwertowanie go na ciąg

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

spowodowałoby wydrukowanie ich wszystkich oddzielonych tabulatorami Oczywiście zwróć uwagę, że przy 102 nazwach, wszystkie są dość długie, będzie to trochę trudne do odczytania



1

możesz tego spróbować

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

1

Nie jest to konwencjonalna odpowiedź, ale myślę, że można przetransponować ramkę danych, aby spojrzeć na wiersze zamiast kolumn. Używam tego, ponieważ uważam, że patrzenie na wiersze jest bardziej „intuicyjne” niż patrzenie na kolumny:

data_all2.T

Powinno to umożliwić wyświetlenie wszystkich wierszy. Ta czynność nie jest trwała , umożliwia jedynie wyświetlenie transponowanej wersji ramki danych.

Jeśli wiersze są nadal obcięte, po prostu użyj, print(data_all2.T)aby wyświetlić wszystko.


Nie jest to konwencjonalna odpowiedź, ale myślę, że można przetransponować ramkę danych, aby spojrzeć na wiersze zamiast kolumn. Chcą tylko nazwy kolumn, nie? Jeśli wiersze są nadal obcięte, po prostu użyj print (data_all2.T), aby wyświetlić wszystko. Jak wydrukowanie wyniku rozwiązałoby problem? Czy i tak jeszcze go nie drukujesz?
AMC

-1

Wiem, że to powtórzenie, ale zawsze kończy się na kopiowaniu, wklejaniu i modyfikowaniu odpowiedzi YOLO:

pd.set_option('display.max_columns', 500)
pd.set_option('display.max_rows', 500)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.