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 Réponses :
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))
J'ai moi-même trouvé une solution plus simple ajoutée comme réponse
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
merci, j'ai moi-même trouvé une solution plus simple ajoutée comme réponse
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
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.
Vous pouvez appliquer la fonction mean de numpy et diffuser le résultat:
import numpy as np df.apply(np.mean, result_type='broadcast')
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