Python:如果列Y的值在可能值的列表L中,则更新列X的值

时间:2018-08-27 07:25:18

标签: python pandas

有一个带有公交车站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'

我知道我的方法有缺陷;任何帮助表示赞赏。

1 个答案:

答案 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

只需将locisin一起使用。

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