python从一列中查找列表,并从另一列中返回等效ID

时间:2020-05-26 05:01:51

标签: python pandas

任何人都可以使用这种方法吗

lst=['a','b','c]

我的输入数据框

id name score
1   a    0.2
2   b    0.3
3   c    0.4
4   d    0.5

我的输出应该是包含1,2,3的列表

res=[1,2,3]

因此,数据框如果匹配则应在lst中查找等效值

2 个答案:

答案 0 :(得分:1)

DataFrame.loc用于测试成员资格,Series.isin,然后将输出Series转换为列表:

lst=['a','b','c']
res = df.loc[df['name'].isin(lst), 'id'].tolist()
print (res)
[1, 2, 3]

如果输出顺序很重要并且必须匹配list的值:

#for non matched values are created NaN
lst=['a','c','e','b']
res = df.set_index('name').reindex(lst)['id'].tolist()
print (res)
[1.0, 3.0, nan, 2.0]

#non matched values are removed
lst=['a','c','e','b']
res = df.set_index('name').reindex(lst)['id'].dropna().astype(int).tolist()
print (res)
[1, 3, 2]

答案 1 :(得分:0)

要生成列表,请使用:

df.set_index('name').id.loc[lst].tolist()