J'ai un pd.dataframe contenant 3 dictionnaires qui ressemble à ceci: 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. P> p>
5 Réponses :
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
supposant que "D" est votre Dataframe, définissez la valeur de "d.index" comme suit: Vous pouvez également itérer p> et le mettre avec p>
juste itérer sur le dictionnaire de chaque rangée comme vous le feriez normalement:
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.
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 ( 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> 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. df = df.applymap(lambda x: int(x[0]))
y2001 y2002
land_cover 120 120
ndvi 3513 3411
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, ...