簡體   English   中英

如何將 function 應用於 dataframe 將列作為參數傳遞

[英]How to apply function to a dataframe passing a column as an argument

我有一個 dataframe

        df: 
        | A     | B |
    1   | "USA" | 2 |
    2   | "USA" |NAN|
    3   | "GER" | 3 |
    4   | "FRA" | 4 |

和一個 function 檢查一個值是否在某個 bitmap 如果是則返回 true 否則返回 false

import pandas as pd
import numpy as np
import os
def valInBitmap(reason, bitmap):
    if(pd.isna(bitmap)):
        return(False)
    if(reason == bitmap):
        return(True)
    n = 0
    while(bitmap>=0):
        if(bitmap<2**n):#4 < 2^3 <8 n= 3
            #print("bitmap:" +str(bitmap) +" < 2^n: 2^" +str(n)+" = "+str(n**2))
            if(reason == 2**(n-1)):#2 == 2^(3-1) = 4
                return(True)
                break
            bitmap = bitmap - 2**(n-1)          
            n = 0
        n  =n+1
    return(False)

現在我想在“B”列上使用 function 並將每行的結果返回到新列“C”

df['C'] = df.apply(lambda row : valInBitmap(2,df['B']), axis = 1)

最終的 dataframe 應如下所示:

        df: 
        |   A   |  B  |   C   |
    1   | "USA" |  2  | True  |
    2   | "USA" |  NA | False |
    3   | "GER" |  3  | True  |
    4   | "FRA" |  4  | False |

但是,當執行代碼時,我收到以下錯誤消息

Exception has occurred: ValueError
('The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().', 'occurred at index 1')

我已經閱讀了有關此錯誤消息的其他線程,但我無法完全理解它並使用建議的解決方案來解決我的問題。 我做錯了什么?

您可以在 dataframe 上使用應用 function,也可以在單個列上使用。 如果你只需要B列,你可以使用:

df['C'] = df['B'].apply(valInBitmap)

function 將一一接收來自 B 列的值,無論 function 返回的值都將保存為 C 中的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM