gpt4 book ai didi

python - 您可以在创建新列时引用分配中新创建的列吗?

转载 作者:行者123 更新时间:2023-12-01 01:01:51 24 4
gpt4 key购买 nike

使用Python 2.7,我有一个函数,我需要通过它创建一个新列,然后从该新列创建第二个新列:

def read_assign(fp, col_name):
df = pd.read_csv(fp).assign(model_id=col_name)
df = df.assign(analytic_sol = k95(df.average_fuel_T, df.average_rod_burnup),
error = np.log10((df.analytic_sol - df.avg_th_cond)/df.analytic_sol))
return df

目前,我收到一条错误消息,指出它无法将 df.analytic_sol 识别为 df 的属性。我是否必须创建一个全新的变量并第二次进行分配?有一个更好的方法吗?

目前这段代码可以工作,但对我来说似乎效率低下:

def read_assign(fp, col_name):
df = pd.read_csv(fp).assign(model_id=col_name)
df = df.assign(analytic_sol = k95(df.average_fuel_T, df.average_rod_burnup))
df = df.assign(error = np.log10((df.analytic_sol - df.avg_th_cond)/df.analytic_sol))
return df

最佳答案

对于python 3.6+

尝试使用 lambda funcions 进行书写。这是有效的,因为直到 assign 列才“分配”函数已完成并返回。

因此,在第一个 assign 调用中,df['analytic_sol'] 尚不存在...但是使用 lambda,您可以本质上是在函数中引用“self”,该函数确实已经具有列analytic_sol

def read_assign(fp, col_name):
df = pd.read_csv(fp).assign(model_id=col_name)
df = df.assign(analytic_sol = k95(df.average_fuel_T, df.average_rod_burnup),
error = lambda x: np.log10((x['analytic_sol'] - df.avg_th_cond) / x['analytic_sol']))
return df

关于python - 您可以在创建新列时引用分配中新创建的列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55731265/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com