[英]Python pandas add a column with a value comparing columns with certain external sets
我有一個 dataframe(約 30 000 行)按車站代碼的行程計數。
從站 | 站到 | 數數 |
---|---|---|
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 條這樣的路線。 任務是根據出發站和目的地站是否包含在一組或另一組中的標准,將路線名稱添加到 dataframe
從站 | 站到 | 數數 | 路線 |
---|---|---|---|
20001 | 20040 | 55 | 1001 |
20040 | 20001 | 67 | 1001 |
20007 | 20080 | 100 | 1002 |
20080 | 20007 | 50 | 1002 |
在主要形式中,路由列表是一個 xml 文件(Sation id C1 item,route 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
並將 station_from 中的站代碼與station_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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.