【问题标题】:find column name of a specific element in dataframe在数据框中查找特定元素的列名
【发布时间】:2026-01-18 20:55:02
【问题描述】:

假设我在 python 中有一个具有以下结构和数据的数据框

'Column1' 'Column2'
 value1   value2
 value3   value4

如何找到value4的列名?

我可以使用 data.iloc[0,0] 或 data.iloc[0:1;0:1] 来获取“value1”,但是如何在不打印整个列值或执行操作的情况下找到它的标签“Column1”使用 for 循环手动检查匹配。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    用途:

    c = df.columns[(df == 'value4').any()].tolist()
    print (c)
    ['Column2']
    

    如果需要第一个匹配值,请使用 iternext - 如果不存在则返回默认值:

    c = next(iter(df.columns[(df == 'value4').any()].tolist()), 'no match')
    print (c)
    Column2
    

    详情

    首先测试所有值:

    print ((df == 'value4'))
       Column1  Column2
    0    False    False
    1    False     True
    

    然后添加DataFrame.any 以测试每列至少一个True

    print ((df == 'value4').any())
    Column1    False
    Column2     True
    dtype: bool
    

    最后过滤列名称:

    print (df.columns[(df == 'value4').any()])
    Index(['Column2'], dtype='object')
    

    【讨论】:

      【解决方案2】:

      您可以在数据框中的任何位置搜索该值并删除它不存在的列:

      df[df == 'value4'].dropna(axis=1, how='all').columns.tolist()
      

      这将返回['Column2']

      【讨论】:

      • 也谢谢你。
      • @Marco:您应该接受答案之一(最有帮助的答案),以通知其他读者您不再需要有关此问题的帮助。 BTW accept 是答案附近的复选标记...