2 votes

utiliser des colonnes spécifiques pour mettre en correspondance de nouvelles colonnes avec le json

J'ai un cadre de données avec :

A B C
1 3 6

Je veux prendre les 2 colonnes et créer la colonne D qui se lit {"A" : "1", "C" : "6}".

la nouvelle sortie de l'image de données serait la suivante :

A B C D
1 3 6 {"A":"1", "C":"6}

J'ai le code suivant :

df['D'] = n.apply(lambda x: x.to_json(), axis=1)

mais cela prend toutes les colonnes alors que je n'ai besoin que des colonnes A et C et que je veux laisser B dans le JSON qui est créé.

Tout conseil sur la manière de cibler les deux colonnes serait apprécié.

0voto

jezrael Points 290608

Utiliser un sous-ensemble dans une fonction lambda :

df['D'] = df.apply(lambda x: x[['A','C']].to_json(), axis=1)

Ou les colonnes de sellect avant apply :

df['D'] = df[['A','C']].apply(lambda x: x.to_json(), axis=1)

Si possible, créez des dictionnaires :

df['D'] = df[['A','C']].to_dict(orient='records')
print (df)
    A   B   C                   D
0   1   3   6    {'A': 1, 'C': 6}

0voto

Corralien Points 6849

Ce n'est pas exactement ce que vous demandez mais vous pouvez convertir vos 2 colonnes en un dict, puis si vous voulez exporter vos données au format JSON, utilisez df['D'].to_json() :

df['D'] = df[['A', 'C']].apply(dict, axis=1)
print(df)

# Output
   A  B  C                 D
0  1  3  6  {'A': 1, 'C': 6}

Par exemple, exporter la colonne D en tant que JSON :

print(df['D'].to_json(orient='records', indent=4))

# Output
[
    {
        "A":1,
        "C":6
    }
]

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