pandas 更改数据框中每个单元格的值以着色表

eh57zj3b  于 2023-08-01  发布在  其他
关注(0)|答案(2)|浏览(134)
  • 只谈论控制台输出 *

我有一个dataframe,看起来像这样:

import pandas as pd

data = [{'a': 1.123, 'b': 'blabla', 'error': True}, {'a': 2.1342, 'b': 'bla', 'error': False}]
df = pd.DataFrame(data)

字符串
x1c 0d1x的数据
我想做的是根据相关行中“错误”单元格的值为每个单元格着色。也就是说,在这种情况下,得到这个表:


  • 不知道为什么,这个缩进不好 *

我通过使用colorama编辑data创建了这个表。

  • 我正在寻找的是更像df.loc[df.error, <ALL_COLUMNS>] = colorama.Fore.RED + str(old_value) + colorama.Fore.RESET(绿色也是一样)

我该怎么做?
我尝试的是:

for col in df.columns:
   df[col] = df.apply(lambda x: Fore.RED + str(x[col]) + Fore.RESET if x[col] else Fore.GREEN + str(x[col]) + Fore.RESET, axis=1)



[X]缩进是不好的,并且逐列地进行,这会把值搞得一团糟
df.apply(lambda x: Fore.RED + str(x['error']) + Fore.RESET if x['error'] else Fore.GREEN + str(x['error']) + Fore.RESET, axis=1)



[X]看起来更好,但我错过了所有的价值观

df.apply(lambda x: Fore.RED + str(x) + Fore.RESET if x['error'] else Fore.GREEN + str(x) + Fore.RESET, axis=1)


x1c4d 1x的
[X]逻辑-工作正常。需要一些调整

oknrviil

oknrviil1#

试试看:

df = df.style.apply(lambda x: np.repeat('color: red' if x['error'] else '', x.shape[0]), axis=1)

字符串
当输出到Excel时,它看起来像...


的数据

abithluo

abithluo2#

我想在cmd控制台窗口中对数据框的CIsForCookies和颜色单元格进行同样的操作。我采用了同样的方法,在df单元格中添加了colorama颜色标签,这也打乱了resp。未对齐打印的数据框。我还尝试插入丰富的颜色标签,这导致了同样的错位。
然后,我在pandas GitHub页面上发现了这个关于styling console/terminal output的讨论,所以,操纵数据框来获取颜色似乎不起作用。
但是富模块在上一篇文章中提到过,我知道你可以用它创建彩色表格。所以我试着将df的最后一行拉到一个JSON对象中,遍历JSON数据,在需要的地方添加颜色,然后用修改后的JSON数据构建一个丰富的表--结果成功了:-)
一些代码...
1.获取df的最后10行作为可交互的JSON数据
第一个月
1.例如,遍历json数据,如果收盘值高于或低于EMA 20,则添加绿色或红色背景:
for index in json_data: if json_data[index]['close'] >= json_data[index]['20EMA']: json_data[index]['20EMA'] = f"[black on green]{json_data[index]['20EMA']}[/]" else: json_data[index]['20EMA'] = f"[black on red]{json_data[index]['20EMA']}[/]"
1.创建一个富表,并从JSON数据中添加行:
for index in json_data: table.add_row(index, str(local_time), str(f"{json_data[index]['close']:.2f}"), str(int(json_data[index]['volume'])), str(json_data[index]['20EMA']), )
最后,你有一个来自df的表格,有不同的单元格颜色。
x1c 0d1x的数据

相关问题