【Python】pandas dataframe输出格式对齐美化的思路

您所在的位置:网站首页 怎么能让标题居中对齐呢 【Python】pandas dataframe输出格式对齐美化的思路

【Python】pandas dataframe输出格式对齐美化的思路

2023-05-26 04:57| 来源: 网络整理| 查看: 265

需求

在jupyter中可以直接使用用dataframe的名字输出美观的表格形式,例如:

12345678910111213141516import QUANTAXIS as QA"""通过本地数据库获取股票日线数据:QA.QA_fetch_stock_day_adv( code, start='all', end=None, if_drop_index=True, collections=Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'quantaxis'), 'stock_day'),)"""data=QA.QA_fetch_stock_day_adv(["002003",'300999','603899'],'2021-05-12','2021-05-13')df = data.datadf open high low close volume amount date code 2021-05-12 002003 7.32 7.51 7.28 7.48 80536.0 5.980900e+07 300999 76.12 76.75 75.11 76.20 146625.0 1.114936e+09 603899 86.80 87.85 85.71 86.60 19172.0 1.656046e+08 2021-05-13 002003 7.44 7.63 7.34 7.55 98429.0 7.403393e+07 300999 75.00 75.60 74.04 74.20 144742.0 1.080974e+09 603899 85.71 88.12 85.10 87.59 14734.0 1.280291e+08

在使用print输出时的结果是这样的。

1print(df) open high low close volume amount date code 2021-05-12 002003 7.32 7.51 7.28 7.48 80536.0 5.980900e+07 300999 76.12 76.75 75.11 76.20 146625.0 1.114936e+09 603899 86.80 87.85 85.71 86.60 19172.0 1.656046e+08 2021-05-13 002003 7.44 7.63 7.34 7.55 98429.0 7.403393e+07 300999 75.00 75.60 74.04 74.20 144742.0 1.080974e+09 603899 85.71 88.12 85.10 87.59 14734.0 1.280291e+08

而当DataFrame中存在中英文混合的时候,会出现print()打印无法对齐的情况,导致输出的结果都没有对齐,十分不美观。如:

123df1 = dfdf1.columns = ["开盘价", "最高价", "最低价", "收盘价", "成交量", "成交金额"]print(df1) 开盘价 最高价 最低价 收盘价 成交量 成交金额 date code 2021-05-12 002003 7.32 7.51 7.28 7.48 80536.0 5.980900e+07 300999 76.12 76.75 75.11 76.20 146625.0 1.114936e+09 603899 86.80 87.85 85.71 86.60 19172.0 1.656046e+08 2021-05-13 002003 7.44 7.63 7.34 7.55 98429.0 7.403393e+07 300999 75.00 75.60 74.04 74.20 144742.0 1.080974e+09 603899 85.71 88.12 85.10 87.59 14734.0 1.280291e+08

那么问题来了。 1. 有没有办法使用print输出中英文混合的dataframe可以对齐美观? 2. 在执行完整的python代码时(非jupyter),有办法象jupyter中一样输出美观的dataframe表格么?

解决办法 问题1 有没有办法使用print输出中英文混合的dataframe可以对齐美观? 12345import pandas as pdpd.set_option('display.unicode.ambiguous_as_wide', True)pd.set_option('display.unicode.east_asian_width', True)pd.set_option('display.width', 180) # 设置打印宽度(**重要**)print(df1) 开盘价 最高价 最低价 收盘价 成交量 成交金额 date code 2021-05-12 002003 7.32 7.51 7.28 7.48 80536.0 5.980900e+07 300999 76.12 76.75 75.11 76.20 146625.0 1.114936e+09 603899 86.80 87.85 85.71 86.60 19172.0 1.656046e+08 2021-05-13 002003 7.44 7.63 7.34 7.55 98429.0 7.403393e+07 300999 75.00 75.60 74.04 74.20 144742.0 1.080974e+09 603899 85.71 88.12 85.10 87.59 14734.0 1.280291e+08 问题2 在执行完整的python代码时(非jupyter),有办法象jupyter中一样输出美观的dataframe表格么?

使用IPython.display来替换print的输出效果。

1234from IPython.display import displaydisplay(df)display(df1) 开盘价 最高价 最低价 收盘价 成交量 成交金额 date code 2021-05-12 002003 7.32 7.51 7.28 7.48 80536.0 5.980900e+07 300999 76.12 76.75 75.11 76.20 146625.0 1.114936e+09 603899 86.80 87.85 85.71 86.60 19172.0 1.656046e+08 2021-05-13 002003 7.44 7.63 7.34 7.55 98429.0 7.403393e+07 300999 75.00 75.60 74.04 74.20 144742.0 1.080974e+09 603899 85.71 88.12 85.10 87.59 14734.0 1.280291e+08 开盘价 最高价 最低价 收盘价 成交量 成交金额 date code 2021-05-12 002003 7.32 7.51 7.28 7.48 80536.0 5.980900e+07 300999 76.12 76.75 75.11 76.20 146625.0 1.114936e+09 603899 86.80 87.85 85.71 86.60 19172.0 1.656046e+08 2021-05-13 002003 7.44 7.63 7.34 7.55 98429.0 7.403393e+07 300999 75.00 75.60 74.04 74.20 144742.0 1.080974e+09 603899 85.71 88.12 85.10 87.59 14734.0 1.280291e+08 问题3 输出dataframe数据时,可以不输出索引号么?

python 2.7

1print df.to_string(index=False)

python 3

1print(df.to_string(index=False))


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3