【问题标题】:Pandas find the first occurrence of a specific value in a row within multiple columns and return column indexPandas 在多列中的一行中查找特定值的第一次出现并返回列索引
【发布时间】:2021-09-20 11:53:59
【问题描述】:

对于数据框:
df = pd.DataFrame({"A":[0,0],"B":[0,1],"C":[1,2],"D":[2,2]})

值为2或某个值时如何获取列名或列索引

并将其放在 df 的新列中,例如 df["TAG"]
df = pd.DataFrame({"A":[0,0],"B":[0,1],"C":[1,2],"D":[2,2],"TAG":[D,C]})

我试过了
df["TAG"]=np.where(df[cols]>=2,df.columns,'')

其中 [cols] 是 df 列的列表

到目前为止,我只能找到在 Pandas 中匹配值时如何查找行索引

在 excel 中,我们可以使用 MATCH(TRUE,INDEX($A:$D>=2,0),) 做一些方法并应用于多行

感谢任何帮助或提示

非常感谢您

【问题讨论】:

    标签: python python-3.x pandas dataframe numpy


    【解决方案1】:

    试试idxmax:

    >>> df['TAG'] = df.ge(2).T.idxmax()
    >>> df
       A  B  C  D TAG
    0  0  0  1  2   D
    1  0  1  2  2   C
    >>> 
    

    【讨论】:

    • @m3wIsw3m 好的!没关系!感谢您接受顺便说一句
    【解决方案2】:

    试试这个:

    search = df.ge(2).any()
    # A    False
    # B    False
    # C     True
    # D     True
    # dtype: bool
    df['TAG'] = search[search == True].index
    

    【讨论】:

    • @U12-Forward OP 想要订购吗?
    • 是的,我可以看到订单的逻辑......
    • 这不适用于 3 行,其中第三行假设 D 为 2
    • @U12-转发你的答案也不行;)
    • 为什么?我在{'A': 0.0, 'B': 1.0, 'C': 2.0, 'D': 1.0} 和错误的 3 行上测试了您的答案
    猜你喜欢
    • 1970-01-01
    • 2022-09-23
    • 2020-10-26
    • 2017-01-10
    • 2017-02-21
    • 2022-09-17
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    相关资源
    最近更新 更多