在多列中查找匹配值并返回匹配的列标题

卢莫斯

我试图检查哪一列(3列)在column中包含相同的值min,并返回match列的列标题。我可以使用进行操作np.where,然后需要手动输入条件并比较各列,这样做是否更优雅?

输入示例:

 A    B   C   min    
 1    2   3   1      
 2    3   6   6      
 2    2   1   2      

输出示例:

 A    B   C   min    which_col
 1    2   3   1      A
 2    3   6   6      C
 2    2   1   2      AB

我可以用:

np.where(df['min']==df['A'], 'A', np.where(df['min']==df['B'], 'B')....)

谢谢!

海盗

我建议的解决方案

dd = df.drop('min', 1)
df.assign(which_col=dd.eq(df['min'], 0).dot(dd.columns))

   A  B  C  min which_col
0  1  2  3    1         A
1  2  3  6    6         C
2  2  2  1    2        AB

说明

我首先为dd所有列减去该'min'分配一个临时数据帧我本可以将所有这些保持一致,但是我相信这有助于提高可读性。

dd = df.drop('min', 1)

接下来,我将该'min'列与进行比较dd但是为了将的每个元素df['min']ddI的每一行进行比较我需要将axis=0参数传递eq方法

dd.eq(df['min'], 0)

       A      B      C
0   True  False  False
1  False  False   True
2   True   True  False

如果我在一个点产品中使用这个结果,它会自动被转换为INT,因此False变得0True1当我将columnsofdd用作另一个操作数时,点积的sum方面会自动将存在匹配项的列中的字符串连接起来。

dd.eq(df['min'], 0).dot(dd.columns)

0     A
1     C
2    AB
dtype: object

最后,我使用包含结果的新列assign创建的新副本df

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 R 中的多列中查找不匹配的值

匹配多列的值

Excel VBA - 在列中查找匹配值并在另一列中返回值

在Sequel中多列的值匹配列表

查找多列中匹配度最高的列R

如何在两列中查找值并在相应列中返回匹配值?

将 Vector 匹配到多列,返回其他列中的索引和对应值

Google表格公式可在单独的表格中查找部分匹配值,然后在另一列中返回匹配值

跨列查找匹配值

在字符串中查找与字典中的值匹配的单词,然后在新列中返回键

在多列中查找条件,并对每个匹配值的偏移量求和

VBA通过匹配多列中的值来查找复制和粘贴

Python / Pandas按ID查找并匹配列值并返回结果

在另一个表中查找匹配的名称,返回与 pandas 中的列关联的值

在列中匹配值

在SQL中,主表应与查找表匹配以用于多列

查找列值在其他列中匹配的索引

使用多列数据在 Google 表格中匹配和返回值

在列中查找特定匹配项,如果该 id 没有该值,则返回 null

如果条件匹配,则查找列中字段总和的 SQL 查询,否则返回默认值

匹配值并在python中获取其列标题

在数据框单元格中查找特定值,并打印具有该值的匹配列的行标题

查找多列的匹配单元格值并发送有关匹配信息的邮件

Excel - 多列查找和匹配

匹配多列时查找重复项

MySQL-从多列搜索中返回匹配的文本

如何匹配多列中的值并替换为bigquery sql中多列中的新值?

选择与熊猫多列中的值匹配的行

检查多列是否在R数据框中匹配值