簡體   English   中英

Python pandas 添加一個列,其值比較列與某些外部集

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM