如何在终端(Linux)中为Pandas Dataframe的文本输出着色?

plicqrtu  于 2023-03-21  发布在  Linux
关注(0)|答案(2)|浏览(154)

我希望能够在Linux终端中使用Pandas DataFrame文本根据正值或负值使用不同颜色打印data_dict中的数据。

data_dict = {"Key1":[1,-2,3], "Key2":[1,2,-3]}

df = pd.DataFrame(data_dict)
print(df)

有没有一种方法可以使用colorama.Fore或类似的东西来更新终端中打印的不同单元格的颜色?

r7xajy2e

r7xajy2e1#

是的,有一种方法,这里是一个示例解决方案:

import pandas as pd
from termcolor import colored

data_dict = {"Key1":[1,-2,3], "Key2":[1,2,-3]}

df = colored(pd.DataFrame(data_dict), 'red')
print(df)

https://pypi.org/project/termcolor/
编辑:
如果你不想使用import
你可以定义一个颜色并迭代关键值的dic:

red = "\033[1;31m"
blue = "\033[1;34m"
data_dict = {"Key1":[1,-2,3], "Key2":[1,2,-3]}
for key in data_dict.keys () :
    print (red, key, blue, data_dict[key])

然后你就把你的条件放在颜色的键上

2ekbmq32

2ekbmq322#

为了将彩色的pandas.DataFrame打印到我的macos终端,我使用了以下代码...

import termcolor
import pandas
# assume `df['foo']` is a `pandas.DataFrame` column with
#     boolean values...
#
# NOTE: there's probably a more idiomatic pandas incantation 
# for what I'm doing here, but this is intended to 
# demonstrate the concept of colorizing `colorized_df['foo']`
colorized_df = None
colored_str_value = ""
colorised_row = []
for original_value in df['foo'].values:
    # casting `original_value` bools as strings to color them red...
    colored_str_value = termcolor.colored(str(original_value), 'red')
    colorized_row.append(colored_str_value)
colorized_df = pandas.DataFrame({'foo': colorized_row})
# Do something here with colorized_df...

现在,当我在终端中打印colorized_df时,它用红色文本呈现colorized_df['foo']...
因此,colorized_df单元格的值必须转换为字符串来为DataFrame内容着色。这些布尔值必须转换为colorized_df[ foo']中的字符串(否则值无法着色)。
对于大多数用例,将原始DataFrame重新转换为字符串是不可能的...一个可能的解决方案(在我的答案中使用)-〉保留DataFrame的两个副本...(A)一个副本用于在df['foo']中呈现为原始DataFrame类型...(B)另一个副本用于自由操作并转换为彩色字符串...
但是,如果修改df['foo'],则必须保持这两个DataFrames同步。

相关问题