【问题标题】:Pandas Optimized Way to Create Dummy-Variable?Pandas 优化创建虚拟变量的方法?
【发布时间】:2015-07-01 21:05:11
【问题描述】:

我正在根据给定的列和条件创建一个新的虚拟变量。下面是我正在使用的代码。它可以工作,但对于我想做的事情来说太慢了。有没有更快的,也许是矢量化的方式在熊猫中创建假人?具体来说,根据我的例子?

我在 pandas 中查找了 get_dummies 函数,但它似乎做的事情与我在这里做的有点不同。我可能是错的,所以如果有人有办法让 get_dummies 与这个例子一起工作,那也是一个可以接受的答案。

def flagger(row, criteria, col):
    if row[col] <= criteria:
        return 1
    if row[col] > criteria:
        return 0

dstk['dropflag'] = dstk.apply(lambda row: flagger(row, criteria, col), axis=1)

编辑:这里有两个很好的答案。乍一看,它们看起来都一样快(至少达到相同的数量级),所以我只接受了一个。如果有人想做一些更严肃的分析,我很乐意修改我的答案选择。

【问题讨论】:

    标签: python optimization pandas dummy-variable


    【解决方案1】:

    为什么不试试np.where。它是按列的矢量化操作,比按行应用要快得多。

    dstk['dropflag'] = np.where(dstk.col <= criteria, 1, 0)
    

    【讨论】:

      【解决方案2】:

      另一种选择是:

      dstk['dropflag'] = (dstk[col] <= criteria).astype(int)
      

      【讨论】:

      • 只是一个小错字.. 应该是 (dstk[col]
      猜你喜欢
      • 1970-01-01
      • 2012-07-20
      • 1970-01-01
      • 2023-03-27
      • 2018-11-11
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 2018-04-06
      相关资源
      最近更新 更多