Jupyter notebook display two pandas tables side by side
我有两个pandas数据帧,我想在Jupyter笔记本中显示它们。
做类似的事情:
1 2 | display(df1) display(df2) |
将它们显示在另一个之下:
我想在第一个数据框右侧有第二个数据帧。 有一个类似的问题,但看起来有人对在显示它们之间的差异的一个数据框中合并它们感到满意。
这对我不起作用。 在我的例子中,数据帧可以表示完全不同的(不可比较的元素),并且它们的大小可以不同。 因此,我的主要目标是节省空间。
我最终编写了一个可以执行此操作的函数:
1 2 3 4 5 6 | from IPython.display import display_html def display_side_by_side(*args): html_str='' for df in args: html_str+=df.to_html() display_html(html_str.replace('table','table style="display:inline"'),raw=True) |
用法示例:
1 2 3 | df1 = pd.DataFrame(np.arange(12).reshape((3,4)),columns=['A','B','C','D',]) df2 = pd.DataFrame(np.arange(16).reshape((4,4)),columns=['A','B','C','D',]) display_side_by_side(df1,df2,df1) |
您可以覆盖输出代码的CSS。它默认使用
1 2 3 4 5 6 7 8 9 10 11 | import pandas as pd import numpy as np from IPython.display import display, HTML CSS =""" .output { flex-direction: row; } """ HTML('<style>{}</style>'.format(CSS)) |
当然,您可以根据需要进一步自定义CSS。
如果您希望仅定位一个单元格的输出,请尝试使用
1 2 3 4 5 | CSS =""" div.cell:nth-child(5) .output { flex-direction: row; } """ |