Convertir pyspark.sql.dataframe.DataFrame type Dataframe de Dictionnaire
J'ai un pyspark Dataframe et j'ai besoin de le convertir en python dictionnaire.
Code ci-dessous est reproductible:
from pyspark.sql import Row
rdd = sc.parallelize([Row(name='Alice', age=5, height=80),Row(name='Alice', age=5, height=80),Row(name='Alice', age=10, height=80)])
df = rdd.toDF()
Une fois que j'ai ce dataframe, j'ai besoin de le convertir dans le dictionnaire.
J'ai essayé comme ceci
df.set_index('name').to_dict()
Mais il donne une erreur. Comment puis-je réaliser cette
Vous devez vous connecter pour publier un commentaire.
Vous devez d'abord les convertir à un
pandas.DataFrame
à l'aide detoPandas()
, vous pouvez utiliser leto_dict()
méthode sur la transposée dataframe avecorient='list'
:{name: [age, height]}
5
au lieu de10
? Vous devriez avoir des documents uniques et si vous avez l'intention de créer un dictionnaire.Veuillez voir l'exemple ci-dessous:
L'entrée que j'utilise pour tester
data.txt
:Nous avons d'abord faire le chargement en utilisant pyspark en lisant ces lignes. Puis nous convertir les lignes, les colonnes de la division de la virgule. Puis nous convertir le natif de RDD à une DF et ajouter des noms à la colume. Enfin, nous convertir à colonnes au format approprié.
Puis nous recueillons tout pour le pilote, et à l'aide de python compréhension de liste nous convertir les données de la forme préférée. Nous convertir la
Row
objet d'un dictionnaire à l'aide de laasDict()
méthode. Dans la sortie, nous pouvons observer que Alice est apparaissant qu'une seule fois, mais c'est bien sûr parce que la clé d'Alice est écrasée.Veuillez garder à l'esprit que vous voulez faire tout le traitement et le filtrage à l'intérieur de pypspark avant de retourner le résultat pour le pilote.
Espère que cette aide, a bientôt.
Si vous avez de ligne intégrées à l'intérieur des lignes, vous pouvez le faire
df.asDict(recursive=True)