Pandas设置依赖于另一个数据帧的元素样式

问题描述 投票:1回答:1

当我写这个问题时,我想出了一个实现。我已经决定发布它因为样式相对较新并且还没有那么多问题所以我希望它可能对其他人有用。我希望不会得到任何支持,并乐意接受其他人的实施。我在meta和this post读过this post,所以希望我能说清楚。如果需要,我可以在下面提供我的实现。

我有一个每小时的时间序列,我按日平均分组。如果每小时数据中的值满足某个阈值,我想突出显示分组数据中的单元格。

例如,如果我的每日均值为1且我的阈值为<-1,我想突出显示每小时值低于-1的日常均值。

我的每小时数据:

import pandas as pd
import numpy as np
from datetime import datetime
np.random.seed(24)
date = pd.date_range(start = datetime(2016,1,1), end = datetime(2016,2,1), freq = "H")
df = pd.DataFrame({'A': np.linspace(1, 100, len(date))})
df = pd.concat([df, pd.DataFrame(np.random.randn(len(date), 4), columns=list('BCDE'))],
               axis=1)

df['date'] = date
df.set_index("date", inplace = True)


#My grouped data
day = df.groupby(pd.Grouper(freq='D')).mean()

做一些事情,然后结果:

Result

pandas dataframe styling
1个回答
0
投票

我将回答我自己的问题,但我所拥有的是缓慢的,这不是一个交易破坏者,因为我不需要在很多数据上做,但如果存在更好的解决方案,我很乐意接受这个答案。

value = -1.06
grouped = df.groupby(pd.Grouper(freq= 'D'))
def highlight(val):
    return 'background-color: green' 
my_style = day.style
for column in day.columns:
    for i in day[column].index:
        data = grouped.get_group(i)[column]
        if (data<value).any(): 
            my_style = day.style.use(my_style.export()).applymap(highlight, subset = pd.IndexSlice[i,column])

my_style
© www.soinside.com 2019 - 2024. All rights reserved.