当前位置: 首页 > 面试题库 >

在pandas df中返回列名称的最有效方法

艾正浩
2023-03-14
问题内容

我有一个pandas df包含4个不同的columns。对于每一个row孤单一个value重要性的多数民众赞成。我想回到的Column name地方是value显示。因此,对于df以下内容,我想在Column标记值为2时返回名称。

d = ({
    'A' : [2,0,0,2],     
    'B' : [0,0,2,0],
    'C' : [0,2,0,0],            
    'D' : [0,0,0,0], 
    })

df = pd.DataFrame(data=d)

输出:

   A  B  C  D
0  2  0  0  0
1  0  0  2  0
2  0  2  0  0
3  2  0  0  0

原来如此 A,C,B,A

我通过这样做

m = (df == 2).idxmax(axis=1)[0]

然后更改行。但这不是很有效。

我也希望将输出Seriespandas df


问题答案:

用途DataFrame.dot

df.astype(bool).dot(df.columns).str.cat(sep=',')

要么,

','.join(df.astype(bool).dot(df.columns))



'A,C,B,A'

或者,作为列表:

df.astype(bool).dot(df.columns).tolist()
['A', 'C', 'B', 'A']

…或系列:

df.astype(bool).dot(df.columns)

0    A
1    C
2    B
3    A
dtype: object


 类似资料:
  • 我在一次面试中被问到以下问题: 问题:名称和签名相同但返回类型不同的方法。他问我,可能吗?这种类型叫什么。 有人能告诉我以下情况吗: > 上面的事情在任何情况下都是可能的(至少像一个在基类中,一个在派生类中?)如果是,是什么类型?比如编译或运行时多态? 在编译时多态性中,如果方法的返回类型与签名也不同,该怎么办?但只有函数的名称是相同的。还是编译时多态性吗? 在重写中,如果我有不同的返回类型,但方

  • 现在我学习Java已经有一段时间了,但有一个概念我很难理解。我习惯了这样的方法 我知道上面的方法会返回一个整数或字符串,无论你想要什么数据类型 现在我在问自己,上述方法的回报类型到底是什么。我如何使用返回的东西做其他事情? 我还看到人们将对象作为这样的参数传递给方法 这又是怎么回事?在什么情况下,上述“风格”是必要的,需要避免什么陷阱? 使用对象而不是整数之类的值让我感到困惑。

  • 问题内容: 我探索了许多有关如何从多个列中返回最大值以及列名的问题和答案。但是我这里还没有解决问题,这个问题会解释: 多个列的SQL MAX? 但是我不知道如何找出具有最大价值的列名称?有任何想法吗? 问题答案: 您可以使用GREATEST函数在所有列中查找最大值:

  • 问题内容: 使用,我有一个用于创建视图的查询,并且试图显示 月份的名称 而不是整数。 在我的数据库中,位于列中。查询中返回日期的行是: 这将返回整数的年份和月份的列。我想返回月份名称)。我试过了: 这显然是不正确的,因为我得到 ‘AS’附近的语法不正确 信息。我的查询的正确语法是什么? 问题答案: 这将为您提供月份的全名。 如果您只想要前三个字母,可以使用此

  • 我有一个应用程序,我想重新品牌。这是我的共享意图代码: 知道哪里出了问题吗? 提前道谢。

  • 问题内容: 我有一个DataFrame: 我想在以开头的列中选择1的值。除了以下以外,还有更好的方法吗: 类似于写类似的东西: 答案应打印出如下所示的DataFrame: 问题答案: 只需执行列表推导即可创建您的列: 另一种方法是从列创建序列,并使用向量化str方法: 为了实现您想要的目标,您需要添加以下内容以过滤不符合您的条件的值: 编辑 看到您想要复杂的答案后,确定为: