2017-05-11 5 views
0

私は3つのデータセットを扱っています。私は3つの異なる関数を書いています。最後に、3つのすべてのデータセットを別の関数で結合したいと考えています。異なる関数から複数のリターンデータセットを操作するpython pandas

私のロジック:

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だけが出力されるように、スクリプトの中に一時的にそれらを格納することはありますか? これらのテンポラリデータセットdata1、data2、data3を結合データセット関数内の最初の3つの関数から呼び出すにはどうすればいいですか?

そうのようなもの:

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は' フォルダに出力されます。

+0

あなたは* combine *を意味しますか?追加するか、それらをマージするか、または他のもの? 'read_csv'は一般的な' pandas'メソッド以外の他のオブジェクトのメソッドではないので、あなたの問題を見るのが非常に難しいので、擬似コードを表示することもできません。あなたは 'to_csv'を意味しましたか? – Parfait

+0

私はパンダを使用しています – Jessica

答えて

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') 
関連する問題