【问题标题】:Trying to create a new column in pandas with 1 if greater than or 0 otherwise.尝试在 pandas 中创建一个新列,如果大于,则为 1,否则为 0。
【发布时间】:2020-07-05 01:27:22
【问题描述】:

我正在尝试使用 lambda 属性在 pandas 中创建条件语句。我想也许我的语法有点不对劲,我需要稍微修正一下。任何建议将不胜感激:

import pandas as pd

Top15['HighRenew'] = Top15['% Renewable'].map(lambda x: 1 if Top15[(Top15['% Renewable'] >= Top15['% Renewable'].median())] else 0)

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以通过将布尔系列转换为 int 来做到这一点:

    Top15['HighRenew'] = (Top15['% Renewable'] >= Top15['% Renewable'].median()).astype(int)
    

    【讨论】:

    • 传递的项目数错误 22,位置暗示 1
    • 抱歉,但这会返回一系列整数 1/0 您的错误意味着您只有一行与您的初衷不同,因此您需要发布示例数据、您的代码、我的代码以及由此产生的错误
    • 我想出了另一种方法。我刚刚应用了这个Top15['HighRenew'] = np.where(Top15['% Renewable'] >= Top15['% Renewable'].median(), int(1), Top15['% Renewable']),它似乎得到了我想要的。但是,这可能不是一个快速的方法。
    • 应该很快,但我的建议应该有效
    【解决方案2】:

    您可以使用 map,但您的 lambda 函数不正确 - map 无处放置变量。

    你需要:

    map(lambda x: 1 if (x >= Top15['% Renewable'].median()) else 0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-19
      • 1970-01-01
      • 2021-09-27
      • 1970-01-01
      • 2016-12-01
      • 2021-06-05
      • 1970-01-01
      • 2018-09-08
      相关资源
      最近更新 更多