任何人都可以使用这种方法吗
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中查找等效值
答案 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()