我有DataFrame
data
它的意思是
data.describe()['mean':'mean']
(没有找到更好的方法来提取手段)
我想显示data
以便它可见,哪些值大于均值(并用红色标记附加某些标签,如"更大")以及哪些值是小于平均值(并用蓝色标记它或用#34标记它;小于#34;)。
据我所知,着色可能取决于输出技术,所以我使用jupyter笔记本和
from IPython.display import display
不需要着色。用标签替换字符串是可以的。
更新
我需要将值包含在单独的1行表中,而不是动态计算。
更新2
假设我有2个数据集
df1 = pd.DataFrame(np.random.rand(10,5))
df2 = pd.DataFrame(np.random.rand(1,5))
并希望根据df1
为<{1}}着色?
答案 0 :(得分:3)
<强>更新强>
df1 = pd.DataFrame(np.random.rand(10,5))
df2 = pd.DataFrame(np.random.rand(1,5))
df1.style.apply(lambda x: np.where(x > df2.loc[0, x.name], 'color: green', 'color: blue'))
OLD回答:
您可以使用Pandas Style:
df.style.apply(lambda x: np.where(x >= x.mean(), 'color: red', 'color: blue'))
答案 1 :(得分:1)
对于更新后的问题,您可以使用
df1.style.apply(lambda x: np.where(x > df2.values[0], 'color: red', 'color: blue'), axis=1)
首先,创建一些示例数据会很好。在这里,我们使用numpy这样做,然后以更清洁的方式采用均值。
np.random.seed(1234)
df = pd.DataFrame(np.random.rand(10,5))
df.mean()
输出
0 0.543436
1 0.371999
2 0.473440
3 0.585303
4 0.370456
dtype: float64
然后,您可以使用np.where
和style
方法对文字进行适当的着色
df.style.apply(lambda x: np.where(x < df.mean(), 'color: blue', 'color: red'), axis=1)