如何使用 tabulate python 包在终端中显示漂亮的表格?

问题描述 投票:0回答:2

我有一个用 python 编写的简单 CLI 应用程序,带有 argparse 模块。基本上,我使用外部 api 获取一些加密货币数据,将其转换为 pandas 数据帧并使用 tabulate 模块打印。但我在终端中打印表格时遇到问题。当我这样做时,一切都会出错,表格无法保持正确的结构,最终一切都像下面的屏幕一样。

Bad formatting

这是使用 tabulate 打印 pandas 数据框的片段

# file: example.py
import requests
from tabulate import tabulate


def get_recommendations():
    url = "https://min-api.cryptocompare.com/data/recommended/all"
    req = requests.get(url, params={'fsym' : 'BTC' ,"tsym": 'USD'})
    return pd.DataFrame(req.json()['Data']['exchanges']).T


df = get_recommendations()

print(
    tabulate(
        df,
        headers=df.columns,
        floatfmt=".5f",
        showindex=True,
        tablefmt="psql",
    )
)

如果你在终端中运行

python example.py
您会在终端中看到混乱,如上面代码片段的屏幕截图所示。

我可以解决它,并在我的终端中显示漂亮、格式良好的表格吗?如下所示? enter image description here

python dataframe terminal argparse tabulate
2个回答
0
投票

我遇到了类似的问题:如何最好地在终端中打印表格?有很多不同的方法(当然,您始终可以只使用 PrettyPrinter)。我发现如果我使用 pandas DataFrame 并结合 rich-dataframe 模块,我可以在终端中生成一个看起来不错的表格。 所以代码可能如下所示:

假设您从一个列表开始。将列表转换为字典。然后将字典传递给数据框。最后调用最后的打印语句。它在终端中运行良好。

编辑:在 MWE 中,您可能需要将 JSON 对象转换为 Python 字典。使用

import json
,然后使用
json.loads(dict)
请参阅示例

from rich_dataframe import prettify
import pandas as pd

languages = ['English', 'Italiano', 'Espanol']

x = dict(enumerate(languages))

df = pd.DataFrame.from_dict(x, orient='index', columns=['Languages Supported'])

table = prettify(df, row_limit=10)

print(table)


0
投票

Pandas 有

DataFrame.to_markdown()
方法,它使用 tabulate 生成可以打印到控制台的漂亮表格。您可以传递
tablefmt=
参数来根据表格文档获取不同样式的表格。

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_markdown.html

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.