J'ai une trame de données pandas qui ressemble à ci-dessous:

A       B              C          
SDF     899501607.2   -26152567.7
ISB     464284188.7   -20278910.23
ADF     0                         
SDF     3978706912   -57575106    
All     5342492708   -104006583.9

Utilisation de la mise en forme conditionnelle de la feuille de calcul Je souhaite afficher les nombres dans le format ci-dessous (arrondi, virgules, négatif comme (), $)

A       B                 C        
SDF     $ 899,501,607     $(26,152,568) 
ISB     $ 464,284,189     $(20,278,910) 
ADF     $ 0               $0           
SDF     $ 3,978,706,912   $(57,575,106)
All     $ 5,342,492,708   $(104,006,584)
2
Shanoo 11 mars 2019 à 21:47

2 réponses

Meilleure réponse

Supposons que vous ayez

import io

df = pd.read_table(io.StringIO('''\
A       B              C          
SDF     899501607.2   -26152567.7
ISB     464284188.7   -20278910.23
ADF     0                         
SDF     3978706912   -57575106    
All     5342492708   -104006583.9'''), delim_whitespace=True)

Ensuite, vous pouvez utiliser pd.ExcelWriter et référencer la documentation pour obtenir

writer = pd.ExcelWriter("output_file_name.xlsx", engine='xlsxwriter')

df.to_excel(writer, sheet_name='Sheet1', index=False)

workbook  = writer.book
worksheet = writer.sheets['Sheet1']

format1 = workbook.add_format({'num_format': '$#,##0.00_);[Red]($#,##0.00)'})
format2 = workbook.add_format({'num_format': '$#,##0.00_);[Red]($#,##0.00)'})


worksheet.set_column('B:B', 18, format1)
worksheet.set_column('C:C', 18, format2)
writer.save()

Ce qui entraînerait

enter image description here

2
rafaelc 11 mars 2019 à 19:15

J'ai remarqué que vous aviez posé des questions sur le formatage conditionnel, mais vous pourriez peut-être envisager d'utiliser un format de nombre personnalisé comme celui-ci :

$#,##0;[Red]$(#,##0)

Qui donne:

Custom format sample

Pour créer un format personnalisé, faites un clic droit sur les cellules, choisissez Format cells... et saisissez la règle :

Custom format setting

1
Michaël Polla 11 mars 2019 à 19:24