【发布时间】:2021-12-29 17:02:11
【问题描述】:
我正在尝试根据其他列和我创建的函数计算 pandas 数据框中的新列。而不是使用 for 循环,我更喜欢将函数应用于整个数据框列。
我的代码是这样的:
df['po'] = vect.func1(df['gra'],
Se,
df['p_a'],
df['t'],
Tc)
其中 df['gra']、df['p_a'] 和 df['t'] 是我的数据框列(参数),Se 和 Tc 是其他(实际)参数。 df['po'] 是我的新专栏。
func1 是我的 vect 包中描述的一个函数。 这个函数是:
def func1(g, surf_e, Pa, t, Tco):
if (t <= Tco):
pos = (g-(Pa*surf_e*g))
else:
pos = 0.0
return(pos)
当以这种方式实现时,我收到一条错误消息,涉及以下行:if (t
错误是: ValueError: Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
我阅读了 pandas 文档,但没有找到解决方案。谁能解释一下是什么问题?
我尝试使用 apply :
例如:
df['po'] = df['gra'].apply(vect.func1)
但我不知道如何将 apply 与多个列一起用作参数。
提前谢谢你。
【问题讨论】:
标签: python pandas dataframe function