我在终端上使用Series和DataFrames很多。系列的默认__repr__
返回一个减少的样本,具有一些头部和尾部值,但其余部分丢失。
是否有内置的方式来打印整个Series / DataFrame?理想情况下,它将支持正确的对齐,可能支持列之间的边界,甚至可能支持不同列的颜色编码。
你也可以使用option_context
,有一个或多个选项:
with pd.option_context('display.max_rows', None, 'display.max_columns', None): # more options can be specified also
print(df)
这将自动将选项返回到先前的值。
如果您正在使用jupyter-notebook,使用display(df)
而不是print(df)
将使用jupyter富显示逻辑(like so)。
无需破解设置。有一个简单的方法:
print(df.to_string())
当然,如果出现这种情况,请制作一个类似这样的功能。您甚至可以将其配置为每次启动IPython时加载:https://ipython.org/ipython-doc/1/config/overview.html
def print_full(x):
pd.set_option('display.max_rows', len(x))
print(x)
pd.reset_option('display.max_rows')
至于着色,过于精细的颜色听起来适得其反,但我同意像bootstrap's .table-striped
这样的东西会很好。你可以随时create an issue建议这个功能。
导入pandas后,作为使用上下文管理器的替代方法,设置此类options以显示整个数据帧:
pd.set_option('display.max_columns', None) # or 1000
pd.set_option('display.max_rows', None) # or 1000
pd.set_option('display.max_colwidth', -1) # or 199
有关有用选项的完整列表,请参阅:
pd.describe_option('display')
使用制表包:
pip install tabulate
并考虑以下示例用法:
import pandas as pd
from io import StringIO
from tabulate import tabulate
c = """Chromosome Start End
chr1 3 6
chr1 5 7
chr1 8 9"""
df = pd.read_table(StringIO(c), sep="\s+", header=0)
print(tabulate(df, headers='keys', tablefmt='psql'))
+----+--------------+---------+-------+
| | Chromosome | Start | End |
|----+--------------+---------+-------|
| 0 | chr1 | 3 | 6 |
| 1 | chr1 | 5 | 7 |
| 2 | chr1 | 8 | 9 |
+----+--------------+---------+-------+
如果您使用的是Ipython Notebook(Jupyter)。您可以使用HTML
from IPython.core.display import HTML
display(HTML(df.to_html()))
试试这个
pd.set_option('display.height',1000)
pd.set_option('display.max_rows',500)
pd.set_option('display.max_columns',500)
pd.set_option('display.width',1000)
这个答案是以前的answer by lucidyan的变种。它通过避免使用set_option
使代码更具可读性。
导入pandas后,作为使用上下文管理器的替代方法,设置此类options以显示大型数据帧:
def set_pandas_options() -> None:
pd.options.display.max_columns = 1000
pd.options.display.max_rows = 1000
pd.options.display.max_colwidth = 199
pd.options.display.width = None
# pd.options.display.precision = 2 # set as needed
set_pandas_options()
在此之后,如果使用笔记本,你可以使用display(df)
或df
,否则使用print(df)
。
您可以使用以下方法实现此目的。只是通过总数没有。 DataFrame中存在的列作为arg
'display.max_columns'
例如:
df= DataFrame(..)
with pd.option_context('display.max_rows', None, 'display.max_columns', df.shape[1]):
print(df)