在函数中,如果值存在,我将返回一个包含两个值的列表,或者返回一个空列表,如下所示:
def func1(prikey):
try:
df = somesql
for index, rW in df.iterrows():
retvalue = [rW['id_in_int'],rW['time_in_str']]
except:
retvalue = []
return retvalue
在主代码中,我为变量赋值:
newdf['newid'],newdf['thistime'] = func1(newdf['prikey'])
但我得到了错误“没有足够的值来解包(预期为2,得到0)” 因此,在函数中,我尝试如下
retvalue = [[],[]]
但由于“值的长度与索引的长度不匹配”而导致错误
并且retvalue = [0,0]
没有给出任何错误,newdf['newid'],newdf['thistime']
的值为零
而且,当我试图检查进一步的行中的值是否为零时,如if(newdf['newid']==0):
,这会产生错误:序列的真值是不明确的。使用a.empty、a.bool()、a.item()、a.any()或a.all()
我也试着检查了一下{
下面的代码返回1个列表
这将导致在下一条语句中出现“没有足够的值来解包(预期为2,得到0)”错误:
由于您描述的其他错误没有示例代码:
我想您不能将0指定给列。尝试分配“”(空字符串)或
np.NaN
。另外newdf['newid']
属于Series
类型,您无法将其与bool进行比较,因此可以使用newdf['newid'].empty
或len(newdf['newid']) == 0
谢谢Shailesh和samy的回复。在函数内部,我使用
retvalue = [0,0]
来解决“没有足够的值来解包(预期为2,得到0)”错误文章https://towardsdatascience.com/apply-and-lambda-usage-in-pandas-b13a1ea037f7帮助我在本系列中使用“.apply”,下面是代码
我在检查
newdf['newid']
的值是否为零相关问题 更多 >
编程相关推荐