如何解决根据条件语句在嵌套函数中返回各种变量
我有一个原始数据框,可以从中创建修改的数据框,但是在某些情况下,我有兴趣选择数据的一个子集,而不是整体使用该数据框,但是我希望所有这些可以在我选择使用数据子集的整个函数中完成,但是有可能基于条件返回不同的变量,或者这是不正确的。
我运行时下面的功能正常工作
modified_df = modify_data(protein_embeddings,protein_df,subset = False)
但是当我尝试执行时:
gal_subset_first,gal_subset_second = modify_data(protein_embeddings,subset = True)
我得到了错误:
ValueError: too many values to unpack (expected 2)
功能
def modify_data(embeddings,df,subset = False):
"""
Modifies Original Dataframe with respective embedddings
:return: Final Dataframe to be used in data split and modelling
"""
#Original_DF
OD_df = df.copy(deep = True)
OD_df = df.reset_index()
OD_df.loc[:,'task'] = 'stability'
#Embeddings Df
embeddings_df = pd.DataFrame(data=embeddings)
embeddings_df = embeddings_df.reset_index()
embedded_df = pd.merge(embeddings_df,OD_df,on='index')
embedded_df = embedded_df.drop(['index','sequence','temperature'],axis = 1)
def subsetting(embedded_df,sample_no,row_no):
"Select a Subset of rows desired from original dataframe"
#Selecting subset
embedded_df = embedded_df.sample(n = sample_no)
subset_first = gal_subset[:row_no]
subset_second = gal_subset[row_no:]
return subset_first,subset_second
if subset == True:
gal_subset_first,gal_subset_second = subsetting(embedded_df,sample_no = 2000,row_no = 1000)
else:
pass
return embedded_df
解决方法
您的函数返回一个可迭代的数据帧。将结果分配给一个变量时,整个数据帧将被写入变量。但是,如果为结果分配多个变量,Python将迭代返回的值,并检查变量数是否与数据框迭代器项匹配。
比较代码示例:
def f():
return (1,2,3)
a = f() # a is a tuple (1,3)
a,b = f() # raises the same exception ValueError: too many values to unpack (expected 2)
a,b,c = f() # a=1 b=2 c=3 because the number of returned values matches the number of the assigned variables.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。