Comment créer une trame de données transposée à partir d'une autre trame de données

Yifei Xu

Je crée un dataframe DF à partir d'un fichier externe, qui a le schéma suivant :

(id, champ1, champ2, champ3) colonne de partition : id

exemple de données est

 000,  11_field1,  22_field2,  33_field3
 001, 111_field1, 222_field2, 333_field3

Je veux créer une autre trame de données à partir de DF dont le schéma est

 (id, fieleName, fieldValue)

exemple de données est

000, field1,  11_field1
000, field2,  22_field2
000, field3,  33_field3
001, field1, 111_field1
001, field2, 222_field2
001, field3, 333_field3

Quelqu'un pourrait-il me dire comment obtenir le nouveau dataframe?

Utilisateur12345

Vous pouvez y parvenir pysparkcomme ci-dessous en utilisant l' explodeoption

Importez d'abord les bibliothèques et fonctions nécessaires

from pyspark.sql import SQLContext, Row

Disons que votre bloc de données est df.

Si tu fais df.show()

vous devriez obtenir un résultat comme ci-dessous

+---+----------+----------+----------+
| id|    field1|    field2|    field3|
+---+----------+----------+----------+
|  0| 11_field1| 22_field2| 33_field3|
|  1|111_field1|222_field2|333_field3|
+---+----------+----------+----------+

Ensuite, mappez toutes les colonnes que vous souhaitez exploser en 2 colonnes. Ici, vous voulez que toutes les colonnes sauf id explosent. Alors, faites ce qui suit

cols= df.columns[1:]

puis convertir data frameà rddcomme ci - dessous

rdd = data.rdd.map(lambda x: Row(id=x[0], val=dict(zip(cols, x[1:]))))

Pour vérifier comment le rdd a été mappé, faites ci-dessous

rdd.take()

vous obtiendrez un résultat comme ci-dessous

[Row(id=0, val={'field2': u'22_field2', 'field3': u'33_field3', 'field1': u'11_field1'}), Row(id=1, val={'field2': u'222_field2', 'field3': u'333_field3', 'field1': u'111_field1'})]

Ensuite, convertissez le rdddos en un data framemotdf2

df2 = sqlContext.createDataFrame(rdd)

Alors fais df2.show(). vous devriez obtenir un résultat comme ci-dessous

+---+--------------------+
| id|                 val|
+---+--------------------+
|  0|Map(field3 -> 33_...|
|  1|Map(field3 -> 333...|
+---+--------------------+

puis enregistrez la trame de données df2 en tant que table temporaire

df2.registerTempTable('mytempTable')

Exécutez ensuite une requête comme ci-dessous sur le bloc de données :

df3 = sqlContext.sql( """select id,explode(val) AS (fieldname,fieldvalue) from mytempTable""")

alors faites df3.show(), vous devriez obtenir le résultat ci-dessous

+---+---------+----------+
| id|fieldname|fieldvalue|
+---+---------+----------+
|  0|   field3| 33_field3|
|  0|   field2| 22_field2|
|  0|   field1| 11_field1|
|  1|   field3|333_field3|
|  1|   field2|222_field2|
|  1|   field1|111_field1|
+---+---------+----------+

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Créer une trame de données simulée dans dplyr à partir d'une autre trame de données

Comment créer une colonne dans une trame de données calculée à partir d'une autre trame de données dans R?

comment créer plusieurs trames de données à partir d'une autre trame de données dans une boucle

comment créer une trame de données à partir d'une liste imbriquée dans R?

Comment copier des attributs d'une trame de données à une autre ou réattribuer des attributs à une trame de données fraîchement transposée - R

Créer une trame de données à plusieurs niveaux à partir d'une trame de données donnée

Python Créer une trame de données à partir d'une trame de données existante

Python Créer une trame de données à partir d'une trame de données existante

R - Comment créer une trame de données à partir d'une trame de données avec des conditions?

Créer une nouvelle trame de données conditionnée aux valeurs d'une autre trame de données

Comment créer ce tableau à partir d'une trame de données triée ?

Comment créer une nouvelle trame de données à l'aide de la sortie groupée d'une autre trame de données?

Comment aplatir une variable de trame de données à partir d'une autre trame de données dans R

Boucle qui crée une trame de données à partir de chaque colonne dans une autre trame de données

Créer une nouvelle trame de données à partir des lignes d'un autre

Créez rapidement une trame de données pandas à partir d'une autre trame de données

Créer une trame de données transposée à une ligne

Comment créer une trame de données à une ligne à partir d'un vecteur dans R ?

Comment créer une trame de données Pandas à partir d'une liste complexe

Comment créer une matrice complète à partir d'une trame de données pandas dense

Extraction de la trame de données pandas à partir d'une autre trame de données

Comment extraire une trame de données d'une autre trame de données dans R

Mettre à jour la trame de données à partir d'une autre trame de données

Créer une nouvelle trame de données indépendante à partir d'une trame existante

Application d'un pourcentage dans une trame de données aux colonnes d'une autre trame de données pour créer une nouvelle trame de données

Créer une nouvelle trame de données de séries temporelles de pandas à partir d'une autre trame de données

Mappage à partir d'une autre trame de données

Comment créer rapidement des listes de bords (style de combinaisons itertools) à partir d'une trame de données pandas indexée booléenne (ou autre solution rapide ?)

comment changer les éléments d'une trame de données basée sur une autre trame de données?

TOP liste

  1. 1

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  2. 2

    Enregistrer le chemin de l'image de la galerie vers la base de données de la salle et l'afficher dans la liste des recycleurs

  3. 3

    Microsoft.WebApplication.targets

  4. 4

    knn classification 10 plis de l'outil et du tri

  5. 5

    Créer un système Buzzer à l'aide de python

  6. 6

    Quelle est la relation entre le modèle et le tableau ? C'est compliqué

  7. 7

    AutoMapper.Collection.EFCore - Erreur générée lors de la configuration

  8. 8

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  9. 9

    Fonction de puissance en Java

  10. 10

    Je continue à obtenir l'objet 'WSGIRequest' n'a pas d'attribut 'Get' sur django

  11. 11

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  12. 12

    Comment remplir les valeurs manquantes avec plusieurs colonnes dans R

  13. 13

    Comment puis-je ajouter un UIView sous mon contrôleur de barre d'onglets par programme?

  14. 14

    Comment créer un bot à compte à rebours dans Discord en utilisant Python

  15. 15

    Sélectionnez le bouton radio sur la saisie de texte

  16. 16

    Comment rechercher des éléments dans une ArrayList? - Java

  17. 17

    opérations en virgule flottante dans go

  18. 18

    Yat-il un référentiel maven application Java à démarrer rapidement 11

  19. 19

    Placez le modeBar en haut au centre à l'aide de plotly.js

  20. 20

    Comment définir la couleur de l'intersection dans un diagramme de Venn?

  21. 21

    Récupérer plusieurs dépôts git dans le même espace de travail Jenkins

chaudétiquette

Archive