处理来自不同函数的多个返回数据集 python pandas

Posted

技术标签:

【中文标题】处理来自不同函数的多个返回数据集 python pandas【英文标题】:Working with multiple return datasets from different functions python pandas 【发布时间】:2017-05-11 19:14:13 【问题描述】:

我正在处理 3 个数据集,我编写了 3 个不同的函数,每个数据集 1 个用于进行一些数据清理和操作。最后,我想将所有 3 个已清理的数据集组合到另一个函数中。

我的逻辑:

import pandas as pd
def function1():
    read in data as df
    df[(df.column1 != "")&(df.column2 != 'MRN')&(df.column3 != "C") ]
    return data1.to_csv() 

def function2():
    read in data as df
    df[(df.column1 != "A")&(df.column2 != 'M')&(df.column3 != " ") ]
    return data2.to_csv() 

def function3():
    read in data as df
    df[(df.column1 != "B")&(df.column2 != 'N')&(df.column3 != " ") ]
    return data3.to_csv() 

def combinedatasets():
    merge (data1, data2, data3)
    return combineddata.to_csv() 

现在我将 data1、data2 和 data3 作为目录中的新文件输出。无论如何将它们临时存储在脚本中,这样这3个文件就不会被输出,而只会输出combineddate.csv? 如何从我的 combinedatasets 函数中的前 3 个函数中调用这些临时数据集 data1、data2、data3 来组合它们?

类似:

import pandas as pd
def function1():
    read in data as df
    df[(df.column1 != "")&(df.column2 != 'MRN')&(df.column3 != "C") ]
    return temporary data1 without outputting it

def function2():
    read in data as df
    df[(df.column1 != "A")&(df.column2 != 'M')&(df.column3 != " ") ]
    return temporary data2 without outputting it

def function3():
    read in data as df
    df[(df.column1 != "B")&(df.column2 != 'N')&(df.column3 != " ") ]
    return temporary data3 without outputting it

def combinedatasets():
    calling temporary data1,2,3 and 
    merge (data1, data2, data3)
    return pd.to_csv('combineddata.csv') #output as a csv file

所以只有“combineddata.csv”会输出到文件夹。

【问题讨论】:

你所说的结合是什么意思?附加它们,合并它们,还是其他?您也可以不显示伪代码,因为很难看到您的问题,因为read_csv 不是任何其他对象的方法,除了一般的pandas 方法。你的意思是to_csv 是的,我正在使用 pandas,让我编辑 【参考方案1】:

只需将一个对象分配给函数调用,因为函数返回一个数据框:

def myfunction():
    data = pd.read_csv('Input.csv')
    # process dataframe...
    return data

def combinedatasets():
    df = myfunction()

或同时分配:

def combinedatasets():
    data1, data2, data3 = function1(), function2(), function3()

但是,请避免在您的环境中使用多个结构相似的数据框,并将数据框保存到一个列表中,然后您可以将其合并或附加在一起:

def combinedatasets():
    dfList = [function1(), function2(), function3()]

    # MERGE/COLUMN BIND
    combinedf = pd.concat(dfList, axis=1, join_axes=[dfList[0].index])
    combinedf.to_csv('CombinedWideData.csv')

    # APPEND/ROW BIND
    combinedf = pd.concat(dfList)
    combinedf.to_csv('CombinedLongData.csv')

【讨论】:

以上是关于处理来自不同函数的多个返回数据集 python pandas的主要内容,如果未能解决你的问题,请参考以下文章

NHibernate 处理来自 sp 调用的多个结果集

Python 机器学习使用多个股票数据集

来自 PostgreSQL 函数的多个 JDBC 结果集

使用 Hadoop 处理来自多个数据源的数据

使用for循环(Python)追加/连接多个excel数据集

如何在不拆分数据帧的情况下传递不同的数据集进行训练和测试。 (Python)?