Zmagam się z pozornie bardzo prostą rzeczą, mam ramkę danych pandy zawierającą bardzo długi ciąg.
df = pd.DataFrame({'one' : ['one', 'two',
'This is very long string very long string very long string veryvery long string']})
Teraz, gdy próbuję wydrukować to samo, nie widzę całego ciągu, widzę raczej tylko część ciągu.
Próbowałem następujących opcji
- za pomocą
print(df.iloc[2])
- za pomocą
to_html
- za pomocą
to_string
- Jedna z odpowiedzi stosu przepełnienia stosu sugerowała zwiększenie szerokości kolumny za pomocą opcji wyświetlania pand, która również nie działała.
- Nie dostałem też, jak
set_printoptions
mi pomoże.
Wszelkie pomysły mile widziane. Wygląda bardzo prosto, ale nie jest w stanie tego uzyskać!
Używaj
pd.set_option('display.max_colwidth', -1)
do automatycznego łamania linii i komórek wieloliniowych.To świetne źródło informacji o tym, jak w pełni wykorzystać wyświetlacz Jupyters z pandami.
źródło
pd.set_option('display.max_colwidth', None)
dla nowszych wersjiInnym, dość prostym podejściem jest wywołanie funkcji listy:
Nie warto wspominać, że konwent nie jest dobry, aby wymieniać całe kolumny, ale dla prostej linii - dlaczego nie
źródło
Innym łatwiejszym sposobem wydrukowania całego ciągu jest wywołanie
values
ramki danych.Wynik będzie
źródło
Czy to chciałeś zrobić?
źródło
Po prostu dodaj następujący wiersz do kodu przed wydrukowaniem.
Możesz po prostu wykonać następujące kroki, aby ustawić inne dodatkowe opcje,
Możesz zmienić opcje funkcji max_columns pandy w następujący sposób, aby wyświetlić więcej kolumn
(pozwala to wyświetlić 10 kolumn, możesz to zmienić w razie potrzeby)
W ten sposób możesz zmienić liczbę wierszy, ponieważ musisz wyświetlić w następujący sposób, aby wyświetlić więcej wierszy
(pozwala to na wydrukowanie 999 wierszy jednocześnie)
to powinno działać dobrze
Prosimy o zapoznanie się z dokumentem, aby zmienić więcej opcji / ustawień dla pand
źródło
Sposób, w jaki często radzę sobie z opisywaną przez Ciebie sytuacją, to użycie
.to_csv()
metody i napisanie na standardowe wyjście:Aktualizacja: teraz powinno być możliwe po prostu użycie
None
zamiastsys.stdout
z podobnym efektem!Powinno to zrzucić całą ramkę danych, w tym całość wszystkich ciągów. Możesz użyć parametrów to_csv, aby skonfigurować separatory kolumn, czy indeks jest drukowany itp. Będzie to jednak mniej ładne niż prawidłowe renderowanie.
Opublikowałem to pierwotnie w odpowiedzi na nieco powiązane pytanie na stronie Dane wyjściowe ze wszystkich kolumn w ramce danych w pandach
źródło
Stworzyłem małą funkcję użytkową, która działa dobrze dla mnie
Mogę zmienić długość szerokości zgodnie z wymaganiami, bez ustawiania na stałe żadnej opcji.
źródło
Jeśli używasz notatnika jupyter, możesz również wydrukować ramkę danych pandy jako tabelę HTML, która wydrukuje pełne ciągi.
Wynik
źródło