python 3.6+记录器记录pandas数据帧 - 如何缩进整个数据帧?

use*_*147 7 python logging python-3.x pandas f-string

我需要使用 python 日志模块来记录熊猫数据帧。我需要同等缩进的整个数据框(所有行)。

以下是简单的所需输出:

Test Dataframe Output Below:

       col1  col2
    0     1     3
    1     2     4
Run Code Online (Sandbox Code Playgroud)

但是,我得到以下输出,其中缩进仅应用于数据帧的第一行:

Test Dataframe Output Below:

       col1  col2
0     1     3
1     2     4
Run Code Online (Sandbox Code Playgroud)

我正在运行的示例代码是:

import pandas as pd
import logging

# sample dataframe
test_df = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})

# logging set up
logging.basicConfig(level=logging.INFO)
logging.getLogger().handlers.clear()
c_handler = logging.StreamHandler()
c_handler.setFormatter(logging.Formatter('%(message)s'))
logging.getLogger().addHandler(c_handler)

# log the pandas dataframe to console
logging.info(f'\tTest Dataframe Output Below:')
logging.info(f'\n\t\t{test_df}')
logging.info(f'{test_df}')
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!

Ke *_*ang 8

logging.info('\t'+ test_df.to_string().replace('\n', '\n\t')) 
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这是非常好的一点。然而在这种情况下,代码是非常不言自明的。pandas 和 python 开发人员在面向用户的函数命名方面做得非常出色。我们可以避免冗长和墨守成规。 (3认同)
  • 不鼓励仅代码答案。请添加一些关于如何解决问题的解释。[来自评论](https://stackoverflow.com/review/low-quality-posts/22801789) (2认同)
  • @KeZhang 同意,但您可以说“要缩进所有数据,只需用换行符和制表符替换换行符”,这样您的代码的意图就很明显了。 (2认同)