2017-09-14 1 views
1

J'ai un dataframe appelé « df » comme ce qui suit:Comment ajouter une colonne à un DataFrame dans Pyspark avec des valeurs incrémentales?

+-------+-------+-------+ 
| Atr1 | Atr2 | Atr3 | 
+-------+-------+-------+ 
| A | A | A | 
+-------+-------+-------+ 
| B | A | A | 
+-------+-------+-------+ 
| C | A | A | 
+-------+-------+-------+ 

Je veux ajouter une nouvelle colonne à elle avec des valeurs supplémentaires et obtenir la trame de données mise à jour suivante:

+-------+-------+-------+-------+ 
| Atr1 | Atr2 | Atr3 | Atr4 | 
+-------+-------+-------+-------+ 
| A | A | A | 1 | 
+-------+-------+-------+-------+ 
| B | A | A | 2 | 
+-------+-------+-------+-------+ 
| C | A | A | 3 | 
+-------+-------+-------+-------+ 

Comment pourrais-je trouver?

Répondre

2

Si vous avez seulement besoin de valeurs incrémentielles (comme un ID) et que vous n'avez aucune contrainte que les nombres doivent être consécutifs, vous pouvez utiliser monotonically_increasing_id(). La seule garantie lors de l'utilisation de cette fonction est que les valeurs vont augmenter pour chaque ligne, cependant, les valeurs elles-mêmes peuvent différer à chaque exécution.

from pyspark.sql.functions import monotonically_increasing_id 

df.withColumn("Atr4", monotonically_increasing_id()) 
+1

Merci! Belle solution! – jartymcfly