python - 根据条件语句返回嵌套函数中的各种变量

标签 python pandas function

我有一个原始数据框,我可以从中创建一个修改后的数据框,但是在某些情况下,我有兴趣选择我的数据的一个子集而不是使用整个数据框,但我希望这一切在我选择使用数据子集的整个函数中完成,但是是否可以根据条件返回不同的变量或者这是不正确的。

下面的函数在我运行时工作正常

modified_df = modify_data(protein_embeddings, protein_df, subset = False)

但是当我尝试执行时:

gal_subset_first, gal_subset_second = modify_data(protein_embeddings, protein_df, 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, 2, 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.

关于python - 根据条件语句返回嵌套函数中的各种变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64116755/

相关文章:

python - Pandas 过滤具有特定年份的数据框行

python - 将 Pandas 日期时间列 yyyy-mm-dd 转换为 YYYYMMDD

python - Pandas + python : merge 2 dataframes cell by cell

python - 使用 *args 解压返回函数参数

mysql - 无法在 MySQL 中创建函数

python - Django:从 HTML 获取列表数据,无需表单或模型

c# - 如何将 python 回调传递给 c# 函数调用

Javascript:使用不同的执行上下文执行函数

python - 曲线拟合和数据预处理

python - matplotlib:将轴偏移值格式化为整数或特定数字