当前位置: 首页 > 知识库问答 >
问题:

具有多个条件的Numpy“where”

干善
2023-03-14

我尝试在数据帧“df_energy”中添加一个新的列“energy_class”,如果“consumpion_energy”值为

有什么办法可以帮我吗?

先谢谢你

共有3个答案

仉联
2023-03-14

我喜欢保持代码干净。这就是为什么我更喜欢np.vectorize这样的任务。

def conditions(x):
    if x > 400:
        return "High"
    elif x > 200:
        return "Medium"
    else:
        return "Low"

func = np.vectorize(conditions)
energy_class = func(df_energy["consumption_energy"])

然后,只需使用以下命令将numpy数组作为列添加到数据帧中:

df_energy["energy_class"] = energy_class

这种方法的优点是,如果希望向列添加更复杂的约束,可以很容易地完成。希望能有帮助。

钱卓君
2023-03-14

您可以使用三元组:

np.where(consumption_energy > 400, 'high', 
         (np.where(consumption_energy < 200, 'low', 'medium')))
李耀
2023-03-14

试试这个:使用@Maxu的设置

col         = 'consumption_energy'
conditions  = [ df2[col] >= 400, (df2[col] < 400) & (df2[col]> 200), df2[col] <= 200 ]
choices     = [ "high", 'medium', 'low' ]
    
df2["energy_class"] = np.select(conditions, choices, default=np.nan)


  consumption_energy energy_class
0                 459         high
1                 416         high
2                 186          low
3                 250       medium
4                 411         high
5                 210       medium
6                 343       medium
7                 328       medium
8                 208       medium
9                 223       medium
 类似资料:
  • 我收集了用户在商店购买的物品,以及他从朋友那里得到的喜欢和不喜欢的东西。集合字段如下所示: 现在,我想得到以下总结: 获取用户X的(喜欢-不喜欢)差异 获取用户X的差异(喜欢-不喜欢)到存储Y 获取用户X的(喜欢-不喜欢)差异到商店Y和产品Z 对于#1,我做了: 我得到了正确的结果: [{"_id":"542ea90fbb1e37b09f660980","rankDiff": 2}] 但当我试图通

  • 问题内容: 我想知道是否可能有这样的事情: 知道项目是通过请求接收的JSON容器,因此这就是为什么我使用键值方法的原因。 谢谢 我之所以问是因为我尝试使用Google进行谷歌搜索,但是我唯一能得到的结果是,但是我必须使用。 问题答案: 你当然可以。就像是: HTML JS 演示小提琴

  • 我在Amazon DynamoDB表分区键和范围键。 表结构 现在我想使用带有多个扫描条件的C#库从表中检索数据。 HashKey=123 有什么方法可以使用c#dynamoDB API实现这一点吗?请帮忙

  • 问题内容: 我有2张桌子: 表: 表: 现在,我想获取所有位置并过滤两个属性: 我正在尝试构造一些查询,如下所示: …但是仍然无法得到我所需要的。 问题答案: 经过几个小时的合并和尝试,我终于做到了: 我太接近了,因此将所有过滤条件都移至。

  • 问题内容: 我有一个变量。 我想呼应,如果等于任何下列值,,,,或。有没有办法通过像?? 这样的单个语句来做到这一点? 问题答案: 我认为,使用“ Or”代替“ And”会有所帮助

  • 我正在尝试从技能作业表中删除一行 以下是我的疑问 但它抛出以下错误; 致命错误:未捕获的异常'异常'消息'您有一个错误在您的SQL语法;检查手册,对应于您的MySQL服务器版本的正确的语法使用附近'skj内连接作业j上<--plhd--0/<--#############################################################################