我通过车站代码有一个数据帧(约3万行)旅行次数。
从站 | 站到 | 计数 |
---|---|---|
20001 | 20040 | 55 |
20040 | 20001 | 67 |
20007 | 20080 | 100 |
20080 | 20007 | 50 |
和数据集-路线ID:车站ID列表。范例10001(20001,2020,20013,... 20040); 10002(20007,2000,20019,... 20080)。这样的路线大约有100条。如果出发地和目的地的站点包含在一个或另一个集合中,则任务是根据该标准将路线的名称添加到数据帧中
从站 | 站到 | 计数 | 路线 |
---|---|---|---|
20001 | 20040 | 55 | 1001 |
20040 | 20001 | 67 | 1001 |
20007 | 20080 | 100 | 1002 |
20080 | 20007 | 50 | 1002 |
在主要形式中,路由列表是一个xml文件(Sation id C1项目,路由ID NM),我可以解析它,但是我不知道将其转换为哪种形式(dataframe,dict)以及该怎么做下一个
<?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>
可以说,您解析XML并将其转换为dict格式,如下所示:
route_id = {1001 : [20001,20040], 1002: [20007,20080]}
然后,您编写这段代码以将其转换为以后可以使用的格式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}
现在,只需使用map
车站代码和dictstation_from
对应的路线代码并将其匹配route_rev
。
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句