簡體   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