Les pandas Python ajoutent une colonne avec une valeur comparant les colonnes avec certains ensembles externes

Sergey Shamsuarov

J'ai un nombre de trames de données (~ 30 000 lignes) de voyages par code de station.

gare de station à compter
20001 20040 55
20040 20001 67
20007 20080 100
20080 20007 50

et dataset - route id: liste des identifiants de la station. Exemple 10001 (20001,2020,20013, ... 20040); 10002 (20007,2000,20019, ... 20080). Il existe environ 100 itinéraires de ce type. La tâche est de faire ajouter le nom de l'itinéraire à la trame de données selon le critère si la gare de départ et de destination est incluse dans l'un ou l'autre ensemble

gare de station à compter route
20001 20040 55 1001
20040 20001 67 1001
20007 20080 100 1002
20080 20007 50 1002

Dans la forme principale, la liste des routes est un fichier xml (élément Sation id C1, route id NM), je peux l'analyser, mais je ne sais pas dans quelle forme le convertir (dataframe, dict) et que faire prochain

<?xml version="1.0" encoding="windows-1251"?><MRS1>
<MR NM="002001" PT="0">
<C N="001" C1="2040484" L="000" NZ="099" PZ="0000" NO="01" S="ВЕР УФАЛЕЙ  " ZT="0" />
<C N="002" C1="2040751" L="006" NZ="099" PZ="0000" NO="01" S="ОП 100 КМ   " ZT="0" />
...
<C N="022" C1="2030055" L="106" NZ="099" PZ="0000" NO="07" S="ШАРТАШ      " ZT="0" />
<C N="023" C1="2031190" L="108" NZ="099" PZ="0000" NO="07" S="ПЕРВОМАЙСК  " ZT="0" />
<C N="024" C1="2030000" L="110" NZ="099" PZ="0000" NO="07" S="ЕКАТЕРИНБ П " ZT="0" />
</MR>
<MR NM="002002" PT="0">
<C N="001" C1="2040000" L="000" NZ="099" PZ="0000" NO="01" S="ЧЕЛЯБИНСК   " ZT="0" />
<C N="002" C1="2041748" L="002" NZ="099" PZ="0000" NO="01" S="ЛОКОМОТИВ1  " ZT="0" />
...
<C N="044" C1="2041502" L="152" NZ="099" PZ="0000" NO="01" S="ОП 1948 КМ  " ZT="0" />
<C N="045" C1="2040550" L="160" NZ="099" PZ="0000" NO="01" S="ЗЛАТОУСТ    " ZT="0" />
</MR>
<MRS1>
sharathnatraj

Disons que vous analysez le XML et le convertissez dans un format dict comme ci-dessous:

route_id = {1001 : [20001,20040], 1002: [20007,20080]}

Ensuite, vous écrivez ce morceau de code à convertir dans un format que vous pourrez utiliser plus tard pour le faire series.map.

route_rev = {}
for i,k in zip(route.keys(), route.values()):
    for j in k:
        route_rev[j] = i
print(route_rev)
{20001: 1001, 20040: 1001, 20007: 1002, 20080: 1002}

Maintenant, utilisez simplement mapet associez le code de la station au code d' station_fromitinéraire correspondant du route_revdict.

df['route'] = df.station_from.map(route_rev)
print(df)
   station_from  station_to  count  route
0         20001       20040     55   1001
1         20040       20001     67   1001
2         20007       20080    100   1002
3         20080       20007     50   1002

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Les pandas ajoutent une colonne avec une formule

Les pandas ajoutent une nouvelle colonne et la remplissent avec l'élément de la liste lorsque le tuple des 2 autres colonnes est unique

Les pandas ajoutent de nouvelles colonnes en divisant une autre colonne

Python Dataframe: nettoyez les données d'une colonne en comparant les valeurs d'autres colonnes

Les pandas Python créent une nouvelle colonne avec groupby avec une fonction agg personnalisée

Les pandas créent une colonne avec les noms des colonnes avec la correspondance la plus faible

Les pandas convertissent la colonne du tableau en plusieurs colonnes avec une condition

Python: calculer les valeurs dans la colonne uniquement dans les lignes avec une valeur spécifique dans une autre colonne

Les pandas ajoutent une ligne à l'index 0 avec des valeurs factices

Pandas: filtrez les lignes en comparant la valeur d'une colonne à une autre valeur pour la même colonne dans une ligne différente

Comment sélectionner toutes les lignes avec une valeur minimale qui remplissent une condition dans une autre colonne pandas

Créer une colonne de dictionnaires avec les clés et les valeurs de deux autres colonnes dans Pandas DataFrame

Au lieu d'ajouter une valeur en tant que nouvelle colonne sur la même ligne, les pandas ajoutent une nouvelle colonne ET une nouvelle ligne

Convertir les valeurs de ligne en colonnes avec sa valeur d'une autre colonne dans Spark Scala

Ajouter une colonne avec value_counts () dans les pandas

Colonne de baisse avec une faible variance chez les pandas

Fonction pour supprimer les colonnes avec une valeur maximale inférieure à une valeur donnée,

utiliser la fonction apply pour créer une nouvelle colonne avec une valeur ronde dans les pandas

les pandas ajoutent une colonne de jours différents à la colonne datetime

Fractionner les valeurs dans une colonne synchronisée avec toutes les autres colonnes

les pandas fusionnent des dataframes où les lignes correspondent et ajoutent une valeur

Python - Transforme une colonne avec les 2 premiers éléments

Tableau croisé dynamique générant une valeur personnalisée en comparant les 2 colonnes

trouver une valeur de colonne dans d'autres colonnes d'un dataframe pandas avec apply?

Créer une colonne de phrase à partir de colonnes avec la valeur 1 dans Pandas Dataframe

CQL (cassandra) - Sélectionnez uniquement les lignes avec une valeur maximale dans l'une des colonnes

Les pandas font pivoter une colonne et la remplissent avec une autre colonne pivotée

Comment créer une nouvelle colonne avec les valeurs .size () d'une autre colonne dans pandas?

retourne une liste de tous les ensembles de données dans un fichier hdf avec pandas

TOP Lista

CalienteEtiquetas

Archivo