0
votes

Comment itérer sur la clé et les valeurs dans un PD.Dataframe?

J'ai un pd.dataframe contenant 3 dictionnaires qui ressemble à ceci: xxx

Je veux itérer sur chaque série pour vous débarrasser de "Y" avant les années (clés) et des valeurs [] autour des valeurs correspondantes.


2 commentaires

avant quelle année? Pouvez-vous fournir la sortie souhaitée?


Voulez-vous éliminer «Y» avant toutes les années de chaque série. Idéalement, la sortie serait un JSON qui ressemble à ceci: {"Nom": "Timeseries", "Table": [{"Nom": "NDVI", "Time": [2001.0, 2002.0, ....] , "Y": [3513, 3411, ...


5 Réponses :


0
votes

Vous pouvez faire un remplacement d'expression régulier ciblé.

df = pd.DataFrame({'A' : [0,'y123', 'y00123']})

print(df)

        A
0       0
1    y123
2  y00123


df1 = df.replace({r'(y)(\d+)' : r'\2'},regex=True)
print(df1)


       A
0      0
1    123
2  00123


0 commentaires

-1
votes

supposant que "D" est votre Dataframe, définissez la valeur de "d.index" comme suit: xxx

Vous pouvez également itérer xxx

et le mettre avec xxx


0 commentaires

0
votes

juste itérer sur le dictionnaire de chaque rangée comme vous le feriez normalement: xxx


0 commentaires

0
votes
df.loc[:,1] = [{ k[1:]:v[0] for  k, v in row.items()} for row in df[1]]
Assumptionsk[1:] assumes that y appears only as the first character of the key in the dictionary, otherwise replace would be a better (but likely to be slower) approach.v[0] assumes that each list has only one value, otherwise you might need to convert these to strings and join them.

0 commentaires

0
votes

Si vous avez construit le cadre de données vous-même et que vous avez accès aux données d'origine, je vous recommande de reformater de telle sorte que les clés du dictionnaire ( Y2002 >) sont des indices, les étiquettes de données ( land_cover code>) sont des en-têtes de colonne. Ensuite, les valeurs du dictionnaire correspondent aux entrées de la trame de données au lieu de dictionnaires.

Cela vous permettrait d'accéder plus facilement aux données et permettant d'accéder plus facilement aux étiquettes de données que vous souhaitez modifier. P>

df = df.applymap(lambda x: int(x[0]))

            y2001  y2002
land_cover    120    120
ndvi         3513   3411


0 commentaires