使用 numpy 时,在自定义函数中添加 Pandas 列不起作用

Adding Pandas column in custom function not working when using numpy

我有以下功能:

def create_col4(df):
    df['col4'] = df['col1'] + df['col2']

如果我在我的 jupyter notebook 中应用此功能,如

create_col4(df_test)

df_testcol4持续修改。

但是,如果我在应用 numpy 函数的地方有以下代码:

import numpy as np
def create_col4(df):
    df['col4'] = np.where(df[col1] == 1, True, False)

,

create_col4(df_test) 

既不会通过 col4 持续追加 df_test,也不会抛出错误。

这是为什么?


如果原因在单个代码中,则完整用例代码:

工作:

def create_leg(df):
    df['leg'] = df["dep_ap_sched"] + "-" + df["arr_ap_sched"]

直接在 jupyter notebook 中执行时也有效:

df['rot_mismatch'] = np.where(
    df['ac_registration_x'].shift(-1).eq(df['ac_registration_x']) == True, 
    ~df['dep_ap_sched'].shift(-1).eq(df['arr_ap_sched']), 
    False 
)

不工作:

create_rotmismatch(some_df) 其中

def create_rotmismatch(df):
    df['rot_mismatch'] = np.where(
        df['ac_registration_x'].shift(-1).eq(df['ac_registration_x']) == True, 
        ~df['dep_ap_sched'].shift(-1).eq(df['arr_ap_sched']), 
        False 
    )
import numpy as np
def create_col4(df_test):
    df['col4'] = np.where(df[col1] == 1, True, False)

没有进一步检查,我首先看到的是这个。 df_testdf 但你在这里混用了名字。

改为:

import numpy as np
def create_col4(df):
    df['col4'] = np.where(df[col1] == 1, True, False)

关于您的其他问题,请尝试 return 您函数末尾的 df。

def create_rotmismatch(df):
    df['rot_mismatch'] = np.where(
        df['ac_registration_x'].shift(-1).eq(df['ac_registration_x']) == True, 
        ~df['dep_ap_sched'].shift(-1).eq(df['arr_ap_sched']), 
        False 
    )
    return df

df = create_rotmismatch(df)