【问题标题】:How to optimize df.assign?如何优化 df.assign?
【发布时间】:2021-02-02 10:07:22
【问题描述】:

我正在处理形状为 (55025, 12) 的数据框 (data) 上的 python,我正在尝试分配一个新列,我的代码是:

data_cat=data.assign(
    type0 = lambda dataframe: dataframe['value'].map(lambda x: x>0),
    type1= lambda dataframe: dataframe['value'].map(lambda x: x>1,
    type2 = lambda dataframe: dataframe['value'].map(lambda x: x>2)
)

它需要很长时间才能运行。我该如何优化它?

谢谢!

【问题讨论】:

  • dataframe['value'].map(lambda x: x>0) 可以写成dataframe['value'].gt(0) 这可能会优化一点。 lt-> 小于,gt-> 大于,le-> 小于等于,类似geeq
  • lambda dataframe: dataframe['value'].map(lambda x: x>0)可以写成type0 = data['value'].gt(0)

标签: python pandas assign


【解决方案1】:

您可以直接在原始数据框上创建新列以避免复制数据,如果它不会造成伤害。

data["type0"] = data["value"].gt(0)
data["type1"] = data["value"].gt(1)
...

否则assign 很好

data_cat = data.assign(
    type0=data["value"].gt(0),
    type1=data["value"].gt(1),
    ...
)

另请参阅pandas accessors,了解可能已经在 pandas 中实现的其他一些常见操作。

【讨论】:

    猜你喜欢
    • 2020-01-16
    • 1970-01-01
    • 2011-12-18
    • 2011-04-09
    • 2010-12-20
    • 1970-01-01
    • 2012-03-31
    • 2021-12-27
    • 2023-03-05
    相关资源
    最近更新 更多