J'ai deux dataframes pandas et je voudrais les afficher dans le notebook Jupyter.
Faire quelque chose comme:
display(df1)
display(df2)
Les montre les uns sous les autres:
Je voudrais avoir un deuxième dataframe à droite du premier. Il y a une question similaire , mais il semble qu'une personne se contente soit de les fusionner dans une seule trame de données, soit de montrer la différence entre elles.
Cela ne fonctionnera pas pour moi. Dans mon cas, les dataframes peuvent représenter des éléments complètement différents (éléments non comparables) et leur taille peut être différente. Mon objectif principal est donc d'économiser de l'espace.
pandas
ipython-notebook
jupyter-notebook
Salvador Dali
la source
la source
Réponses:
Vous pouvez remplacer le CSS du code de sortie. Il utilise
flex-direction: column
par défaut. Essayez de lerow
remplacer par. Voici un exemple:Vous pouvez, bien sûr, personnaliser davantage le CSS comme vous le souhaitez.
Si vous souhaitez cibler la sortie d'une seule cellule, essayez d'utiliser le
:nth-child()
sélecteur. Par exemple, ce code modifiera le CSS de la sortie de seulement la 5ème cellule du notebook:la source
HTML('<style>{}</style>'.format(CSS))
est la dernière ligne de la cellule (et n'oubliez pas d'utiliser le sélecteur nth-child). Cependant, cela peut entraîner des problèmes de formatage, donc votre solution est meilleure. (+1)HTML('<style>.output {flex-direction: row;}</style>')
par souci de simplicitéJ'ai fini par écrire une fonction qui peut faire ceci:
Exemple d'utilisation:
la source
*args
au lieu de justedf
? Est-ce parce que vous pouvez avoir plusieurs entrées avec*args
? 2) Quelle partie de votre fonction fait que le 2ème df et les suivants s'ajoutent à droite du premier au lieu de le faire en dessous? Est-ce la'table style="display:inline"'
partie? Merci encoreStyler
s, pasDataFrame
s. Dans ce cas, utilisez à lahtml_str+=df.render()
place dehtml_str+=df.to_html()
.À partir de
pandas 0.17.1
la visualisation des DataFrames peuvent être directement modifiés avec les méthodes de style pandasPour afficher deux DataFrames côte à côte, vous devez utiliser
set_table_attributes
avec l'argument"style='display:inline'"
comme suggéré dans ntg answer . Cela renverra deuxStyler
objets. Pour afficher les dataframes alignés, transmettez simplement leur représentation HTML jointe via ladisplay_html
méthode d'IPython.Avec cette méthode, il est également plus facile d'ajouter d'autres options de style. Voici comment ajouter une légende, comme demandé ici :
la source
En combinant les approches de gibbone (pour définir les styles et les légendes) et stevi (ajouter de l'espace), j'ai créé ma version de function, qui produit des cadres de données pandas sous forme de tableaux côte à côte:
Usage:
Production:
la source
Voici la solution de Jake Vanderplas que je suis tombée l'autre jour:
Crédit: https://github.com/jakevdp/PythonDataScienceHandbook/blob/master/notebooks/03.08-Aggregation-and-Grouping.ipynb
la source
Ma solution construit simplement un tableau en HTML sans aucun hacks CSS et le produit:
la source
Cela ajoute des en-têtes à la réponse de @ nts:
la source
mydisplay((df1,df2))
only donne à ladf.to_html(index=False) df.to_html(index=False)
place du contenu du dataframe. De plus, il y a un signe supplémentaire '}' à la f'string '.J'ai fini par utiliser HBOX
la source
La réponse de Gibbone a fonctionné pour moi! Si vous voulez de l'espace supplémentaire entre les tables, accédez au code qu'il a proposé et ajoutez-le
"\xa0\xa0\xa0"
à la ligne de code suivante.la source
J'ai décidé d'ajouter des fonctionnalités supplémentaires à la réponse élégante de Yasin, où l'on peut choisir à la fois le nombre de cols et de lignes; tous les dfs supplémentaires sont ensuite ajoutés au bas. De plus, on peut choisir dans quel ordre remplir la grille (il suffit de changer le mot-clé de remplissage en 'cols' ou 'rows' selon les besoins)
sortie de test
la source
Extension de la réponse d'Antony Si vous souhaitez limiter la visualisation des tableaux à quelques nombres de blocs par ligne, utilisez la variable maxTables.
la source