3 votes

Comment créer une nouvelle colonne dynamiquement dans pandas comme nous le faisons dans pyspark avecColumn

from statistics import mean
import pandas as pd
df = pd.DataFrame(columns=['A', 'B', 'C'])
df["A"] = [1, 2, 3, 4, 4, 5, 6]
df["B"] = ["Feb", "Feb", "Feb", "May", "May", "May", "May"]
df["C"] = [10, 20, 30, 40, 30, 50, 60]
df1 = df.groupby(["A","B"]).agg(mean_err=("C", mean)).reset_index()

# How can I do this in Pyspark .withColumn() instead of the last line of code?

Au lieu de la dernière ligne de code, comment puis-je le faire comme dans Pyspark .withColumn() ?

enter image description here

Ce code ne fonctionnera pas. Je voudrais créer une nouvelle colonne en utilisant la sortie de l'opération en temps réel de la même manière que nous le faisons dans Pyspark avec la méthode withColumn.

Est-ce que quelqu'un a une idée de comment faire cela ?

2voto

Shubham Sharma Points 39381

Option 1: DataFrame.eval

(df.groupby(['A', 'B'], as_index=False)
   .agg(mean_err=('C', 'mean'))
   .eval('threshold = A * mean_err'))

Option 2: DataFrame.assign

(df.groupby(['A', 'B'], as_index=False)
   .agg(mean_err=('C', 'mean'))
   .assign(threshold=lambda x: x['A'] * x['mean_err']))

   A    B  mean_err  threshold
0  1  Feb      10.0       10.0
1  2  Feb      20.0       40.0
2  3  Feb      30.0       90.0
3  4  May      35.0      140.0
4  5  May      50.0      250.0
5  6  May      60.0      360.0

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X