Dans le cadre de mes recherches de fin d'études, j'ai dû traiter un fichier csv raisonnablement volumineux. Plus précisément, le travail de regroupement des lignes en fonction de la valeur de la colonne id et l'acquisition de la ligne avec la plus petite colonne de distance dans chaque groupe. La méthode utilisée à ce moment-là est décrite ci-dessous.
Le code est comme suit.
import pandas as pd
data = pd.read_csv("Chemin vers le fichier de données d'origine")
df = pd.DataFrame(columns=data.columns)
###Ce sera le fichier de sortie final. Le nom de la colonne est le même que celui des données et il est vide à ce stade.
dic = {}
for name,group in data.groupby('id'):
dic[name] = group
list = dic['id'].unique()
for i in list:
k = dic[i]
l = k['distance'].idxmin()
m = data.iloc[l:l+1,:]
df = df.append(m)
df.to_csv("Le chemin du répertoire que vous souhaitez enregistrer")
Je pense qu'il y a un code plus concis ... Il est utile dans de nombreuses situations, telles que la création d'un DataFrame qui hérite des noms de colonne des données d'origine et l'obtention du numéro de ligne qui minimise la valeur d'une certaine colonne.
Recommended Posts