简体   繁体   English

通过 pandas 和 python 为列文件 csv 添加颜色

[英]Add color for columns files csv by pandas with python

I'm trying read data file csv, that done, but I want to write another data with some conditions add style(color, both...) for data in csv file.我正在尝试读取数据文件 csv,已完成,但我想在某些条件下写入另一个数据,为 csv 文件中的数据添加样式(颜色,两者...)。

i) I read the data from a file csv, is a simple test file first to apply a large data file latter, so the data test is file is i)我从一个文件csv中读取数据,是一个简单的测试文件先申请一个大数据文件,所以数据测试文件是

cod     price   var
AMZ     8484    -1.15
BABA    1390    3.5
GOGL    327     -10.5
MSFT    1135    3.3
VISA    6499    2.0
PBB     1055    4.0
CHC     3455    1.1
IFT     5228    -4.0
FRA     4555    2.0

ii) put conditions and read only values which column var > 1 ii)放置条件并只读列var> 1的值

iii) put back ground color in the cod column: iii)在 cod 列中放置背景颜色:

 red where var => 3 
 yellow where var = 2 <3

iv) save in another data csv iv) 保存在另一个数据中 csv

my code until moment is:我的代码直到那一刻是:

import pandas as pd

df = pd.read_csv("teste.csv") 
f1 = df['var'] > 1    


df[f1].to_csv('export.csv')

I don't know how use style in pandas, can you please help me this case?我不知道如何在 pandas 中使用样式,你能帮我看看这个案例吗?

You can try something like this你可以试试这样的

import numpy as np
import pandas as pd


df = pd.DataFrame([[8484,-1.15],[1390,3.5],[327,10.5],[1135,3.3],[6499,2.0],[1055,4.0]], columns=['data1','dat2'])


def color_rule(val):
    return ['background-color: red' if x >= 3 else 'background-color: yellow' for x in val]

html_column = df.style.apply(color_rule, axis=1, subset=['dat2'])

html_column.to_excel('styled.xlsx', engine='openpyxl')

html_column

#edit: you can export your styled dataframe with to_excel #edit:您可以使用 to_excel 导出您的样式 dataframe

#edit2: change de color of column 'Cod' instead the column 'var' #edit2:更改列“Cod”的颜色,而不是列“var”

import numpy as np
import pandas as pd


df = pd.DataFrame([['ex1',8484,-1.15],['ex2',1390,3.5],['ex3',327,10.5],['ex4',1135,3.3],['ex5',6499,2.0],['ex6',1055,4.0]], columns=['tag','data1','dat2'])


def color_rule(tag):
    var1 = df['dat2'][df['tag'] == tag.values[0]]
    return ['background-color: red' if x >= 3 else 'background-color: yellow' for x in var1]

html_column = df.style.apply(color_rule, axis=1, subset=['tag'])

html_column.to_excel('styled.xlsx', engine='openpyxl')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM