arguments pandas to_csv float_format et décimal ne fonctionnent pas pour la colonne d'index
Fond
Je suis en train de faire quelques simulations resp. un système d'analyse par variing paramètres (dans ce cas rpm
seulement) et l'ajouter à la dernière ligne de résultats dataframe results_df
à résumant dataframe df
contenant donnant la baviour de mon système en depencence de la variété des rpm
.
Afin d'obtenir un indice approprié pour le traçage et l'analyse des données j'ai converti les diverses valeurs (ici rpm
) à partir de la liste dans un pandas série ser
et concat cette série avec le résumant dataframe df
contenant les résultats qui m'intéressent.
Depuis les résultats de chaque calcul, je suis intéressé en est seulement la dernière ligne de chaque calcul, je suis l'extraction de ces données à partir des résultats dataframe results_df
en utilisant .tail(1)
.
Ce que j'ai fait jusqu'à présent est illustré dans l'extrait suivant:
rpm = [0.25, 0.3, 0.5, 0.75, 1.0, 1.5, 2.0]
ser = pd.Series(rpm, name='rpm')
df = pd.DataFrame()
df_list = list()
for i, val in enumerate(rpm):
results_df = get_some_data_from_somwhere()
df_list.append(results_df.tail(1))
df = df.append(df_list, ignore_index=True)
df = pd.concat([df, ser], axis=1)
df.set_index('rpm', inplace=True)
with open('foo.csv', 'w') as f:
data.to_csv(f, index=True, header=True, decimal=',', sep=' ', float_format='%.3f')
Problème
Ce fichier csv ce que je reçois a l'follwing format:
rpm cooling_inner heating_inner cooling_outlet heating_outlet
0.25 303,317 323,372 302,384 324,332
Cependant, je m'attendais à avoir trois chiffres après la virgule et une virgule comme séparateur décimal signe sur mon index de la colonne, comme illustré ici:
rpm cooling_inner heating_inner cooling_outlet heating_outlet
0,250 303,317 323,372 302,384 324,332
Il semble donc que la index
et decimal
signe options ne sont pas appliquées à l'indice de la colonne lors de l'exportation dataframes de csv fichiers à l'aide de la .to_csv
commande.
Comment pourrais-je atteindre ce comportement depuis le index
option est définie True
et toutes les valeurs (à l'exception de l'indice de colonne) d'avoir le bon format et signe décimal?
Dois-je traiter la colonne d'index, d'une certaine manière séparée?
source d'informationauteur albert
Vous devez vous connecter pour publier un commentaire.
Je voudrais réécrire vos deux lignes du bas:
En
C'est un peu une solution de contournement, mais comme vous l'avez remarqué, le mot-clé arguments
decimal=
etfloat_format=
ne fonctionne que sur données colonnes, et non sur l'indice.Ce que je faire à la place est de mettre l'index dans le dataframe avec
reset_index
et ensuite je me suis disto_csv(index=False
de ne pas enregistrer l'index du fichier (puisque que c'est désormais dans les données).Aussi, l'ouverture d'un fichier de flux de toi (
with open('foo.csv', 'w') as f:
) est préférable pour les pandas, qui le fait par lui-même quand vous donnez simplement une chaîne de caractères'foo.csv'
comme premier argument.