5
votes

Python renommant les colonnes Pandas DataFrame

avg.rename(columns = {1:"mean"}, inplace=True)

1 commentaires

Avez-vous essayé de lire le fichier directement avec pandas ... pd.read_csv (datafile, delimiter = '\ t') ou similaire?


3 Réponses :


4
votes

IIUC vous pouvez faire ceci

avg = df.groupby("b", sort=False, as_index=False)["a"].mean()\
        .reset_index()\
        .rename(columns={"a":"mean"})

ou

avg = df.groupby("b", sort=False)["a"].mean().reset_index()\
        .rename(columns={"a":"mean"})

ou

import pandas as pd
df = pd.DataFrame({"a":np.arange(10),
                   "b":np.random.choice(["A","B"],10)})

avg = df.groupby("b", sort=False)["a"].mean()\
        .reset_index(name="mean")

p>


2 commentaires

Cela a fonctionné comme un charme, la méthode du milieu m'a semblé la plus propre et la plus simple à lire. Merci.


C'est aussi mon préféré. Mais je voulais noter quelques options.



0
votes

Je pense que cela devrait fonctionner:

avg = df.groupby(["t"], sort=False)["p"].mean().rename('mean').reset_index()


1 commentaires

Cela me donne TypeError: l'objet 'str' n'est pas appelable ... Je ne sais pas pourquoi car je ne comprends pas complètement le fonctionnement de renommer et reset_index.



0
votes

J'ai rencontré le même problème et je ne savais pas trop quel était le problème. Lorsque vous appelez:

df.groupby(...)["p" ....rename(columns={1:"mean"})

rename () est appelé sur DataFrame ["p"] qui renvoie un objet Series, pas un objet DataFrame. La fonction rename () pour un objet Series n'a pas de paramètre de colonne (car il n'y a qu'une seule "colonne"). Parfois, les pandas convertissent implicitement des objets Series en DataFrames, de sorte qu'il est facile de les rater. Vous pouvez également écrire

pd.Series.to_frame (df.groupby (...) ["p"]. mean (). reset_index (), name = 'mean')


0 commentaires