J'ai une table en CSV comme ceci: CSV de base Et j'ai besoin de le grouper comme ceci: Dans tous mes CONCURSO, seuls les changements CIDADE et UF. Attendu CSV J'essaye ce code mais cela ne fonctionne pas. Pouvez-vous les gars ...

0
Antony Cassiano Bueno 17 mars 2021 à 03:29

1 réponse

Meilleure réponse

La méthode agg() de Pandas peut prendre un dictionnaire pour le paramètre func. Ce dict mappe la colonne et sa fonction d'agrégation.

Je suppose que vous pouvez alors faire ce qui suit:

columns_to_aggregate = ["Cidade", "UF"]
columns_for_groupby = ["Concurso"]
columns = list(set(new_df.columns).difference(columns_for_groupby))
aggregation_func = {c: (lambda x: ", ".join(map(str, x))) if c in columns_to_aggregate else "min" for c in columns}
new_df = new_df.groupby(by=columns_for_groupby, as_index=False).agg(aggregation_func)
new_df.to_csv(fr'C:\Users\anton\Desktop\Anon\data\lake\{date}\tratado.csv', index=False)

Dites-moi si cela ne fonctionne pas :)

0
HenriChab 17 mars 2021 à 01:09