我想使用.assign
函数添加新列。
df = pd.DataFrame({'A': range(1, 5), 'B': range(11, 15)})
def delta(df):
df = df.assign(df_delta = df.A - df.B,
df_multiply = df_delta*30
)
return df
print(delta(df))
但收到此错误
NameError:名称'df_delta'未定义
答案 0 :(得分:1)
在赋值函数中尚未定义df_delta
列,您可以使用temp变量来规避此错误:
df = pd.DataFrame({'A': range(1, 5), 'B': range(11, 15)})
def delta(df):
a_b = df.A - df.B
df = df.assign(df_delta = a_b, df_multiply = a_b*30)
return df
print(delta(df))
打印:
A B df_delta df_multiply
0 1 11 -10 -300
1 2 12 -10 -300
2 3 13 -10 -300
3 4 14 -10 -300
答案 1 :(得分:1)
或者您可以使用lambda来实现这一点,它可以读取已分配的列:
def delta(df):
df = df.assign(df_delta = df.A - df.B, df_multiply = lambda x : x['df_delta']*30)
return df
print(delta(df))
A B df_delta df_multiply
0 1 11 -10 -300
1 2 12 -10 -300
2 3 13 -10 -300
3 4 14 -10 -300