Python 为Dataframe中文本字符串中的1个单词和相应的值着色

Python 为Dataframe中文本字符串中的1个单词和相应的值着色,python,pandas,dataframe,Python,Pandas,Dataframe,我正在使用jupyter笔记本返回此数据帧。我试图把“看涨”这个词涂成绿色,把“看跌”涂成红色。此外,如果看涨,买入/卖出交易价格应为绿色,看跌,买入/卖出价格应为红色。谢谢你的帮助 此处的示例文件: 编辑1 代码可以工作,但它会删除“我的日期”列。你知道发生了什么事吗?另外,当我使用这段代码时,我得到以下错误。我希望能够返回1个数据日期,因此我使用:df_rr.loc[“2021-03-10”] 我得到AttributeError:“Styler”ojbect没有属性“loc” 有没有更好

我正在使用jupyter笔记本返回此数据帧。我试图把“看涨”这个词涂成绿色,把“看跌”涂成红色。此外,如果看涨,买入/卖出交易价格应为绿色,看跌,买入/卖出价格应为红色。谢谢你的帮助

此处的示例文件:


编辑1

代码可以工作,但它会删除“我的日期”列。你知道发生了什么事吗?另外,当我使用这段代码时,我得到以下错误。我希望能够返回1个数据日期,因此我使用:df_rr.loc[“2021-03-10”]

我得到AttributeError:“Styler”ojbect没有属性“loc”

有没有更好的办法限制一个日期


编辑2

2021年3月12日 谢谢你的编辑。最后一件事,你能帮我把索引栏中的文字也涂成牛市和熊市的颜色吗。非常感谢你

跟进-这很好用,但是我可以只将单词“看涨”和“看跌”着色,而不是全文字符串吗?谢谢


编辑3

看起来新代码给我的值加了零。如何在价格列中去掉尾随的零?谢谢

编辑4-4/2/2021

3个问题:

  • 为什么有0被添加到我的数据中(在“买入交易”和“卖出交易”列中)
  • 有没有可能让看涨的词变成绿色,看跌的词变成红色,中性的词变成灰色
  • 日期列更改为有时间,我们可以删除时间吗

  • 一如既往地谢谢你

    您可以使用
    样式

    def cts(x):
        c1 = 'color: red'
        c2 = 'color: green'
        c3 = 'color: black'
        if 'BULLISH' in x['INDEX']:
            return c3,c1,c1
        elif 'BEARISH' in x['INDEX']:
            return c3,c2,c2
        else:
            return c3,c3,c3
    
    df = df.reset_index(drop=True).style.apply(cts,subset=['INDEX', 'BUY TRADE', 'SELL TRADE'], axis=1)
    

    df:

    编辑:

    编辑2: 如果你想给
    索引上色,也可以这样做:(最初我显示的是黑色,但对于那些你可以根据条件将颜色更改为红色/绿色)


    当您的字符串包含反斜杠时,必须使用usr
    r“…”
    。请查看代码删除日期列。你说的代码是我的。不要使用'df.reset_index()`而使用'df.reset_index()`删除日期索引。你想给索引的整个文本上色还是只给这些单词上色?如果你是指整个索引行,那么我将更新我的答案。只需少量修改。在帖子中包含回溯或错误。但是,如果查询是指向答案(某人)的链接,则对其进行评论。@mac为什么需要执行
    .loc
    ??用截图编辑你的帖子。大学教师;r把它写在我难以理解的评论中。
    def cts(x):
        c1 = 'color: red'
        c2 = 'color: green'
        c3 = 'color: black'
        if 'BULLISH' in x['INDEX']:
            return c3,c1,c1
        elif 'BEARISH' in x['INDEX']:
            return c3,c2,c2
        else:
            return c3,c3,c3
    
    df = df.reset_index(drop=True).style.apply(cts,subset=['INDEX', 'BUY TRADE', 'SELL TRADE'], axis=1)
    
    df.loc['2020-12-07'].reset_index().style.apply(cts,subset=['INDEX', 'BUY TRADE', 'SELL TRADE'], axis=1)
    
    if 'BULLISH' in x['INDEX']:
        return c1,c1,c1
    elif 'BEARISH' in x['INDEX']:
        return c2,c2,c2
    else:
        return c3,c3,c3