首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pandas应用以系列数据为参数的函数

Pandas应用以系列数据为参数的函数
EN

Stack Overflow用户
提问于 2020-09-12 06:15:43
回答 1查看 34关注 0票数 0

我正在使用apply函数处理name1列。我可以将像8这样的fix值传递到函数中,但是我希望使用来自每一行的值(num_of_bit)来处理name1列。当我使用下面的代码时,我会得到错误。我明白为什么我会犯这个错误,但我不知道如何实现我想要的。

代码语言:javascript
运行
复制
def signedProcessing(input,num_of_bit):
    if input < (2**num_of_bit)/2:
        input += 256
    return input

out_df.loc[out_df['range_type'] == "SIGNED", [name1]] = out_df[out_df['range_type']=="SIGNED"][name1].apply(signedProcessing,num_of_bit=out_df[out_df['range_type'] == "SIGNED"]['num_of_bit'])

系列的真值是不明确的。使用a.empty、a.bool()、a.item()、a.any()或a.all().

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-12 10:35:14

如果我正确地理解了这个问题,并且您需要通过应用函数来更改'name1‘值,其中'range_type’是‘签名’的‘,那么您就没有传递'num_of_bit’来应用,所以它尝试对每一行使用整个列。我建议使用lambda函数:

代码语言:javascript
运行
复制
out_df.loc['name1'] = out_df[['name1', 'num_of_bit', 'range_type']].apply(lambda x: signedProcessing(x.name1, x.num_of_bits) if x.range_type=='SIGNED' else x.name1, axis=1)

这将将具有“签名”name1的行的“range_type”值更改为signedProcessing(name1的值,num_of_bits的值)。如果range_type是其他东西,它不会更改name1值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63857428

复制
相关文章

相似问题

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