【问题标题】:Find column name in Pandas that contains a specific value in the row from another column在 Pandas 中查找包含另一列的行中的特定值的列名
【发布时间】:2020-06-01 13:16:42
【问题描述】:

我有 200 多列乘以 10000 多行。我正在尝试查找包含行中特定值的列的名称。在下面的示例中,具体值在值列中。我如何确定“值”列中的值并不重要。

示例:Value_Col 是我试图返回的值。

Date   Time  A     B     C     D     E     F     Value   Value_Col
Jan1   1245  3.0   3.2   4.6   5.7   2.1   8.0   5.7     D
Jan2   1045  4.5   8.4   3.9   2.2   9.4   8.3   3.9     C
Jan3   1350  1.4   3.3   4.5   8.9   1.4   0.4   1.4     A

我只想搜索列 A 到 F 并找到值存在的第一个实例(最左侧)的列名。在示例中,我感兴趣的值在以 Jan3 日期开头的行中出现了两次。我想基本上索引值出现的列名并选择第一个。我知道这将是基于为值搜索返回的列表的索引 0(或 [0])。

上面的例子只是数据的一小部分。我目前有一个我希望在其中进行值搜索的所有列名的列表。感兴趣的值可以通过同一行中的许多列出现。

【问题讨论】:

    标签: python pandas search row columnname


    【解决方案1】:

    我只想搜索列 A 到 F 并找到第一个实例的列名(最左边)值存在

    在将Value 列与数据帧的切片进行比较后,您可以在axis=1 上使用idxmax(使用.loc[]

    df['Value_Col'] = df.loc[:,'A':'F'].isin(df['Value']).idxmax(1)
    print(df)
    

       Date  Time    A    B    C    D    E    F  Value Value_Col
    0  Jan1  1245  3.0  3.2  4.6  5.7  2.1  8.0    5.7         D
    1  Jan2  1045  4.5  8.4  3.9  2.2  9.4  8.3    3.9         C
    2  Jan3  1350  1.4  3.3  4.5  8.9  1.4  0.4    1.4         A
    

    如果有可能没有一列可能包含 df['Value] 值,您可以使用:

    m = df.loc[:,'A':'F']
    df['Value_Col'] = m.isin(df['Value']).dot(m.columns).str[0]
    

    【讨论】:

    • 完美!谢谢
    猜你喜欢
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 2023-02-17
    • 2016-04-20
    • 2019-10-24
    相关资源
    最近更新 更多