0
votes

Comment puis-je remplacer les éléments de dataframe par leur moyenne de colonne?

Je recherche une fonction comme la suivante:

  5  4
  5  4

Exemple:

  6   3
  4   5

to:

new_df = df.fill(df.mean(), axis=1)


4 commentaires

Que veux-tu dire? Une colonne dont l'élément est la moyenne de tous les éléments d'une même ligne? Pouvez-vous fournir une entrée et la sortie attendue?


@RiccardoBucco j'ai ajouté un exemple


Pourquoi avez-vous besoin d'un tel dataframe? Avez-vous simplement besoin de le soustraire de l'original?


@RiccardoBucco Non, je veux juste la sortie


4 Réponses :


1
votes

Voici une solution possible:

import numpy as np
import pandas as pd

df = pd.DataFrame([[6, 3], [4, 5]])
result = pd.DataFrame(np.repeat(pd.DataFrame([df.mean()]).values, len(df), axis=0))


1 commentaires

J'ai moi-même trouvé une solution plus simple ajoutée comme réponse



1
votes
import pandas as pd
# your input df
df = pd.DataFrame([[6, 3], [4, 5]], columns = ['col1', 'col2'])

# to get output df as you want
for col in df.columns: df[col] = df[col].mean()

#df
#   col1  col2
#0   5.0   4.0
#1   5.0   4.0

1 commentaires

merci, j'ai moi-même trouvé une solution plus simple ajoutée comme réponse



2
votes

La réponse courte est:

new_df = df.add(df.mean()-df, axis=1)

#new_df
#    0     1
#0   5.0   4.0
#1   5.0   4.0


2 commentaires

Je vous ai demandé dans les commentaires que la soustraction était une option ... C'est exactement ce que je voulais dire! la prochaine fois, soyez plus précis s'il vous plaît.


@RiccardoBucco ai-je soustrait ou ajouté quelque chose? la sortie est juste la sortie de votre solution mais avec une solution plus courte! Quelle est la différence? Je viens de dire que j'ai besoin de la sortie dans n'importe quelle solution possible.



2
votes

Vous pouvez appliquer la fonction mean de numpy et diffuser le résultat:

import numpy as np
df.apply(np.mean, result_type='broadcast')


0 commentaires