Uruchamiam tę komórkę w notatniku IPython:
# salaries and teams are Pandas dataframe
salaries.head()
teams.head()
W rezultacie otrzymuję dane wyjściowe tylko teams
ramki danych, a nie obu salaries
i teams
. Jeśli po prostu uruchomię salaries.head()
, otrzymam wynik dla salaries
ramki danych, ale po uruchomieniu obu instrukcji widzę tylko wynik teams.head()
. Jak mogę to poprawić?
pandas
jupyter-notebook
ipython
Lokesh
źródło
źródło
Odpowiedzi:
czy próbowałeś
display
polecenia?from IPython.display import display display(salaries.head()) display(teams.head())
źródło
display()
jest automatycznie udostępniany użytkownikowi bez importu”.from IPython.display import display
Prostszy sposób:
from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "all"
Oszczędza to konieczności wielokrotnego wpisywania „Display”
Powiedzmy, że komórka zawiera to:
from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "all" a = 1 b = 2 a b
Wtedy wynik będzie:
Out[1]: 1 Out[1]: 2
Jeśli używamy
IPython.display.display
:from IPython.display import display a = 1 b = 2 display(a) display(b)
Wynik to:
1 2
Więc to samo, ale bez
Out[n]
części.źródło
get_ipython().ast_node_interactivity = 'all'
, a nie zastępować właściwości klasy ciągiem znaków stałych!Zapewniać,
print salaries.head() teams.head()
źródło
print salaries.head()
nie jest dobrze sformatowane.Notatnik IPython pokazuje tylko ostatnią zwracaną wartość w komórce. Najłatwiejszym rozwiązaniem dla twojego przypadku jest użycie dwóch ogniw.
Jeśli naprawdę potrzebujesz tylko jednej komórki, możesz zrobić taki hack :
class A: def _repr_html_(self): return salaries.head()._repr_html_() + '</br>' + teams.head()._repr_html_() A()
Jeśli potrzebujesz tego często, zrób z tego funkcję:
def show_two_heads(df1, df2, n=5): class A: def _repr_html_(self): return df1.head(n)._repr_html_() + '</br>' + df2.head(n)._repr_html_() return A()
Stosowanie:
Wersja na więcej niż dwie głowy:
def show_many_heads(*dfs, n=5): class A: def _repr_html_(self): return '</br>'.join(df.head(n)._repr_html_() for df in dfs) return A()
Stosowanie:
źródło
Wymieniając wszystkie rozwiązania:
sys.displayhook(value)
, do którego podłącza się IPython / jupyter. Zauważ, że zachowuje się to nieco inaczej niż wywołaniedisplay
, ponieważ zawieraOut[n]
tekst. Działa to również dobrze w zwykłym Pythonie!display(value)
, jak w tej odpowiedziget_ipython().ast_node_interactivity = 'all'
. Jest to podobne, ale lepsze niż podejście przyjęte w tej odpowiedzi .Porównanie tych w sesji interaktywnej:
In [1]: import sys In [2]: display(1) # appears without Out ...: sys.displayhook(2) # appears with Out ...: 3 # missing ...: 4 # appears with Out 1 Out[2]: 2 Out[2]: 4 In [3]: get_ipython().ast_node_interactivity = 'all' In [2]: display(1) # appears without Out ...: sys.displayhook(2) # appears with Out ...: 3 # appears with Out (different to above) ...: 4 # appears with Out 1 Out[4]: 2 Out[4]: 3 Out[4]: 4
Zauważ, że zachowanie w Jupyter jest dokładnie takie samo, jak w ipythonie.
źródło