繁体   English   中英

Python Pandas 以系列数据为参数应用函数

[英]Python Pandas apply function with series data as argument

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

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()。

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

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)

这会将具有“SIGNED” range_type 的每一行上的“name1”值更改为signedProcessing(name1 的值,num_of_bits 的值)。 如果 range_type 是别的东西,它不会改变 name1 值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM