首页 > 解决方案 > Pandas:如果行中有匹配项,则返回列名

问题描述

我正在使用 Python 中的熊猫。当一行的一个单元格与同一行中的另一个单元格匹配时,我试图返回一列的名称。这是一个例子:

     City 1    City 2  City 3 City 4       1       2         3      4     5
0  New York    London   Paris  Tokyo  London   Tokyo  New York  Paris   X  
1     Paris  New York  London  Tokyo   Tokyo  London  New York  Paris   X  

我正在寻找与 City 1 列(值是纽约)的下一个巧合。在第一行中,该匹配项位于名为“3”的列中。然后,我想在第 5 列中,其中 X 应该出现“3”,因为“纽约”出现在“3”列中。下一个相同...我会查找与 City 1(巴黎)的匹配,然后第 5 列应显示“4”,因为巴黎在该列中。

我希望我已经正确解释了。你对如何做有什么建议吗?提前致谢!

标签: pythonpandas

解决方案


假设您正在检查 City 1 的下一次出现

df[5] = df.apply(lambda x: x[x == x['City 1']].index[-1], axis = 1)
    City 1  City 2  City 3  City 4  1   2   3   4   5
0   New York    London  Paris   Tokyo   London  Tokyo   New York    Paris   3
1   Paris   New York    London  Tokyo   Tokyo   London  New York    Paris   4

推荐阅读