元组拆包问题
Problems with tuple unpacking
在一个函数中,如果值存在或空列表,我将返回一个包含两个值的列表,如下所示:
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'])
但是我得到了错误 "not enough values to unpack (expected 2, got 0)"
所以,在函数中,我尝试如下
retvalue = [[],[]]
但是得到的错误是 "Length of values does not match length of index"
retvalue = [0,0]
没有给出任何错误,newdf['newid'],newdf['thistime']
的值为零。
并且,当我尝试检查 if(newdf['newid']==0):
中的值是否为零时,会出现错误:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()
我也试过检查 len()
,但也没用。
感谢任何帮助。
我想您不能将 0 分配给列。尝试分配“”(空字符串)或 np.NaN
。另外 newdf['newid']
是 Series
类型,您不能将它与 bool 进行比较,因此您可以使用 newdf['newid'].empty
或 len(newdf['newid']) == 0
您的代码在 returns 1 个列表下方,
def func1(prikey):
try:
df = somesql
for index, rW in df.iterrows():
retvalue = [rW['id_in_int'],rW['time_in_str']] #here 1 list!
except:
retvalue = [] #here 1 list!
return retvalue
这将导致:"not enough values to unpack (expected 2, got 0)" 下一条语句中出现错误:
newdf['newid'],newdf['thistime'] = func1(newdf['prikey'])
由于您描述的其他错误没有示例代码:
The 'or' and 'and' python statements require truth-values. If these are
considered ambiguous you should use "bitwise" | (or) or & (and)
operations.
感谢 Shailesh 和 samy 的回复。在函数内部,我使用 retvalue = [0,0]
来解决 "not enough values to unpack (expected 2, got 0)" 错误。
文章https://towardsdatascience.com/apply-and-lambda-usage-in-pandas-b13a1ea037f7帮助我在系列中使用“.apply”,下面是代码。
newdf['newwaittime'] = newdf['newid'].apply(lambda x: 0 if x==0 else get_new_wait_time(x))
我正在检查 newdf['newid']
的值是否为零。
在一个函数中,如果值存在或空列表,我将返回一个包含两个值的列表,如下所示:
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'])
但是我得到了错误 "not enough values to unpack (expected 2, got 0)" 所以,在函数中,我尝试如下
retvalue = [[],[]]
但是得到的错误是 "Length of values does not match length of index"
retvalue = [0,0]
没有给出任何错误,newdf['newid'],newdf['thistime']
的值为零。
并且,当我尝试检查 if(newdf['newid']==0):
中的值是否为零时,会出现错误:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()
我也试过检查 len()
,但也没用。
感谢任何帮助。
我想您不能将 0 分配给列。尝试分配“”(空字符串)或 np.NaN
。另外 newdf['newid']
是 Series
类型,您不能将它与 bool 进行比较,因此您可以使用 newdf['newid'].empty
或 len(newdf['newid']) == 0
您的代码在 returns 1 个列表下方,
def func1(prikey):
try:
df = somesql
for index, rW in df.iterrows():
retvalue = [rW['id_in_int'],rW['time_in_str']] #here 1 list!
except:
retvalue = [] #here 1 list!
return retvalue
这将导致:"not enough values to unpack (expected 2, got 0)" 下一条语句中出现错误:
newdf['newid'],newdf['thistime'] = func1(newdf['prikey'])
由于您描述的其他错误没有示例代码:
The 'or' and 'and' python statements require truth-values. If these are considered ambiguous you should use "bitwise" | (or) or & (and) operations.
感谢 Shailesh 和 samy 的回复。在函数内部,我使用 retvalue = [0,0]
来解决 "not enough values to unpack (expected 2, got 0)" 错误。
文章https://towardsdatascience.com/apply-and-lambda-usage-in-pandas-b13a1ea037f7帮助我在系列中使用“.apply”,下面是代码。
newdf['newwaittime'] = newdf['newid'].apply(lambda x: 0 if x==0 else get_new_wait_time(x))
我正在检查 newdf['newid']
的值是否为零。