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?

Nabih Bawazir
źródło

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())
YOLO
źródło
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']
różowy ukośnik
źródło
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())
EEE
źródło
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.

nico
źródło
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.

S. Tibbitts
źródło
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.

Sherman
źródło
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ę.

Ashwani Shakya
źródło
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]
Rao Sahab
źródło
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

David L.
źródło
1

Miałem wiele zduplikowanych nazw kolumn i raz pobiegłem

df = df.loc[:,~df.columns.duplicated()]

Udało mi się zobaczyć pełną listę kolumn

Kredyt: https://stackoverflow.com/a/40435354/5846417

RK
źródło
1

możesz tego spróbować

pd.pandas.set_option('display.max_columns', None)
naimur978
źródło
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.

Mężczyzna
źródło
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)
Thomas G.
źródło