Maison > développement back-end > Tutoriel Python > Comment colorer des cellules spécifiques en fonction de l'index de ligne et du nom de colonne dans les pandas ?

Comment colorer des cellules spécifiques en fonction de l'index de ligne et du nom de colonne dans les pandas ?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2024-02-15 16:39:03
avant
1029 Les gens l'ont consulté

如何在 pandas 中给定行索引和列名称的特定单元格上色?

Contenu de la question

J'ai un dataframe df avec une forme (100,10) et un dictionnaire columns_to_color pour chaque ligne.

columns_to_color = {
  0: ['col1', 'col2', 'col9'],  # Columns 1, 2 and 9 should be colored for row 0
  1: ['col1', 'col5', 'col8'],  # Columns 1, 5 and 8 should be colored for row 1
  2: ['col3', 'col4', 'col7'],  # Columns 3, 4 and 7 should be colored for row 2
  .......
Copier après la connexion

Comment colorer des cellules spécifiques pour chaque ligne de cette colonne ? Et puis sauvegarder pour exceller ?


Bonne réponse


Vous pouvez utiliser 。 style.apply() comme ceci :

df.style.apply(
    lambda row: [
        'font-weight: bold' if col in columns_to_color[row.name] else ''
        for col in row.index],
    axis=1)
Copier après la connexion

(J'utilise le gras uniquement pour plus de commodité.)

Ensuite, pour convertir vers Excel, utilisez .to_excel().

Exemple :

df = pd.DataFrame({f'col{n}': range(10*n, 10*n + 3) for n in range(10)})
Copier après la connexion

Après apply (dans mon idée) :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal