有一个带有公交车站ID列表的数据框,并且集线器为“ none”。我需要更新数据框,以便-如果公交车站ID在列表a_ids中,则其对应的集线器应为a,如果在b_ids中则为hub = b,依此类推。
a = pd.DataFrame(({'stop' : ['10388','10382','10383','10387','10389','25568'],'hub' : ['none', 'none', 'none', 'none', 'none', 'none']}))
a_ids = ['10388','10382','10383']
b_ids = ['10387','10389','25568','10381']
a
我尝试过:
a[(a.stop.isin(a_ids)),'hub'] = 'a'
我知道我的方法有缺陷;任何帮助表示赞赏。
答案 0 :(得分:0)
尝试一下:
a = pd.DataFrame(({'stop' : ['10388','10382','10383','10387','10389','25568'],
'hub' : ['none', 'none', 'none', 'none', 'none', 'none']}))
a_ids = ['10388','10382','10383']
b_ids = ['10387','10389','25568','10381']
print (a)
# Output
stop hub
0 10388 none
1 10382 none
2 10383 none
3 10387 none
4 10389 none
5 25568 none
只需将loc
与isin
一起使用。
a.loc[a.stop.isin(a_ids), 'hub'] = 'a'
a.loc[a.stop.isin(b_ids), 'hub'] = 'b'
output:
stop hub
0 10388 a
1 10382 a
2 10383 a
3 10387 b
4 10389 b
5 25568 b