【问题标题】:Color 1 word in a text string in Pandas Dataframe and corresponding values在 Pandas Dataframe 中为文本字符串中的 1 个单词和相应的值着色
【发布时间】:2021-03-11 04:19:08
【问题描述】:

我正在使用 jupyter notebook 来返回这个数据框。我正在尝试将“看涨”一词涂成绿色,将“看跌”一词涂成红色。此外,如果看涨,则买入/卖出交易价格应为绿色,看跌则买入/卖出价格应为红色。感谢您的帮助!

此处的示例文件:https://drive.google.com/drive/folders/1WWdFlXIqQCM6LyeWZglPzqUwhCy3blTD?usp=sharing

Sample output

import pandas as pd
import numpy as np
from datetime import date
from datetime import timedelta 

df_rr = pd.read_csv("W:\mac\dev\py\RR.csv", parse_dates=["DATE"], index_col="DATE")
df_rr.loc["2021-03-10"]

编辑 1

代码有效,但它删除了我的日期列。你知道它发生了什么吗?此外,当我使用此代码时,我收到以下错误。我希望能够返回 1 个数据日期,这就是我使用的原因:df_rr.loc["2021-03-10"]

我得到 AttributeError: 'Styler' ojbect has no attribute 'loc'

有没有更好的方法来限制一个日期?


编辑 2

2021 年 3 月 12 日 感谢您的编辑。最后一件事,您能否帮助使 INDEX 列中的文本也为牛市和熊市着色。真的很感谢你。

FOLLOW UP - 这很好用,但是我可以只用 BULLISH 和 BEARISH 这两个词而不是全文字符串着色吗?谢谢!


编辑 3

看起来新代码向我的值添加了零。您如何在价格列中截断尾随零?谢谢!

Screenshot

编辑 4 - 2021 年 4 月 2 日

Here is the original data + code to load the data

Here is the view after I add in your code

3 个问题:

  1. 为什么我的数据中添加了 0(在 BUY TRADE 和 SELL TRADE 列中)?
  2. 是否可以只将 BULLISH 设为 GREEN、BEARISH 设为 RED 和 NEUTRAL 设为 GREY?
  3. DATE 列更改为有时间,我们可以删除时间吗?

一如既往的感谢!

【问题讨论】:

  • 当您的字符串包含反斜杠时,您必须使用 usr r"..."
  • style
  • 代码删除日期列。通过代码,您的意思是我的代码。而不是df.reset_index(drop=True) 使用`df.reset_index()` 删除日期索引
  • 您想为索引的整个文本着色还是只对那些单词着色?如果您的意思是整个索引行,那么我将更新我的答案。将需要很少的修改。
  • 在帖子中包含回溯或错误。但如果查询是指向答案(某人)的链接,则对其发表评论。

标签: python pandas dataframe


【解决方案1】:

您可以使用style 着色

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:

编辑:

df.loc['2020-12-07'].reset_index().style.apply(cts,subset=['INDEX', 'BUY TRADE', 'SELL TRADE'], axis=1)

编辑2:

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

if 'BULLISH' in x['INDEX']:
    return c1,c1,c1
elif 'BEARISH' in x['INDEX']:
    return c2,c2,c2
else:
    return c3,c3,c3

【讨论】:

  • @mac 为什么你需要做.loc ??使用您卡住的屏幕截图编辑您的帖子。不要写在我难以解释的评论中。
猜你喜欢
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-04
  • 1970-01-01
  • 1970-01-01
  • 2012-08-20
  • 1970-01-01
相关资源
最近更新 更多