首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于np.select条件生成增量权重的函数

基于np.select条件生成增量权重的函数
EN

Stack Overflow用户
提问于 2021-03-06 03:38:09
回答 1查看 48关注 0票数 0

目的:定义使用标志(1,2,3)作为触发不同权重(.2,.4,0)的条件的函数。输出是仅具有权重的新df。

np.select正在生成此错误:

TypeError: condlist中的条目0无效:应为布尔值ndarray

图中所示的输出为“增量权重输出”。

代码语言:javascript
复制
import pandas as pd
import numpy as np

flags = pd.DataFrame({'Date': ['2020-01-01','2020-02-01','2020-03-01'],
                    'flag_1': [1, 2, 3],
                   'flag_2': [1, 1, 1],
                   'flag_3': [2, 1, 2],
                   'flag_4': [3, 1, 3],
                   'flag_5' : [1, 2, 2],
                   'flag_6': [2, 1, 2],
                   'flag_7': [1, 1, 1],
                   'flag_8': [1, 1, 1],
                   'flag_9': [3, 3, 2]})

flags = flags.set_index('Date')

def inc_weights(dfin, wt1, wt2, wt3):
    dfin = pd.DataFrame(dfin.iloc[:,::-1])
    dfout = pd.DataFrame()
    conditions = [1,2,3]
    choices = [wt1,wt2,wt3]
    dfout=np.select(conditions, choices, default=np.nan)
    return(dfout.iloc[:,::-1])
inc_weights = inc_weights(flags, .2, .4, 0)
print(inc_weights)

Input and Output

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-07 10:01:12

np.select是不必要的。使用带有映射字典的df.replace的简单解决方案。

代码语言:javascript
复制
import pandas as pd
import numpy as np

flags = pd.DataFrame({'Date': ['2020-01-01','2020-02-01','2020-03-01'],
                    'flag_1': [1, 2, 3],
                   'flag_2': [1, 1, 1],
                   'flag_3': [2, 1, 2],
                   'flag_4': [3, 1, 3],
                   'flag_5' : [1, 2, 2],
                   'flag_6': [2, 1, 2],
                   'flag_7': [1, 1, 1],
                   'flag_8': [1, 1, 1],
                   'flag_9': [3, 3, 2]})

flags = flags.set_index('Date')

print(flags)

def inc_weights(dfin, wt1, wt2, wt3):
    dfin = pd.DataFrame(dfin.iloc[:,::-1])
    dfout = pd.DataFrame()
    mapping = {1:wt1,2:wt2,3:wt3}
    dfout=dfin.replace(mapping)
    return(dfout.iloc[:,::-1])
inc_weights = inc_weights(flags, .2, .4, 0)
print(inc_weights)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66498659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档