使用 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_test
被col4
持续修改。
但是,如果我在应用 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_test
或 df
但你在这里混用了名字。
改为:
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)
我有以下功能:
def create_col4(df):
df['col4'] = df['col1'] + df['col2']
如果我在我的 jupyter notebook 中应用此功能,如
create_col4(df_test)
、df_test
被col4
持续修改。
但是,如果我在应用 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_test
或 df
但你在这里混用了名字。
改为:
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)