首页 > 解决方案 > 从另一列列表中获取一列列表中的项目索引

问题描述

我有一个包含两列的数据框

column_1                column_2
["apple","orange"]      ["orange", "apple"]
["banana"]              ["apple"]

我想要一个结果列,它将告诉 . 中的项目column_2是什么索引column_1。如果不存在则返回 -1。例如:输出将是

output_column
[1,0]
[-1]

标签: pythonarrayspandasnumpydataframe

解决方案


如果您的子列表很小:

df['output_column'] = df.apply(lambda x:[x.column_1.index(item) if item in x.column_1 else -1 for item in x.column_2],axis=1)

如果您的子列表很大:

df['output_column'] = df.apply(lambda x:[dict((value,idx) for idx,value in enumerate(x.column_1)).get(item,-1) for item in x.column_2],axis=1)

输出:

          column_1         column_2 output_column
0  [apple, orange]  [orange, apple]        [1, 0]
1         [banana]          [apple]          [-1]

推荐阅读