2017-01-20 19 views
5

既存のpandasデータフレームがある場合は、別のPythonスクリプトで実行するとそのデータフレームを再現するpythonコードを生成する方法がありますか?Pandas Dataframe to Code

In[1]: df 

Out[1]: 
    income user 
0 40000 Bob 
1 50000 Jane 
2 42000 Alice 

In[2]: someFunToWriteDfCode(df) 

Out[2]: 
df = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice'], 
    ...:     'income': [40000, 50000, 42000]}) 
+1

質問には意味がありません。別のプログラムで実行されますか?あなたは何について話していますか? Python、R?データフレームをcsvとして保存して、他のプログラムにロードしてください。 –

答えて

-1

最初にデータフレームを保存し、必要に応じて別のPythonスクリプトを読み込むことができます。 2つのパッケージ(pickleshelve)で実行できます。

import pandas as pd 
import pickle 
df = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice'], 
        'income': [40000, 50000, 42000]}) 
with open('dataframe', 'wb') as pfile: 
    pickle.dump(df, pfile)   # save df in a file named "dataframe" 

を別のファイルにデータフレームを読み取るには:pickleでそれを行うには

import pickle 
with open('dataframe', 'rb') as pfile: 
    df2 = pickle.load(pfile)  # read the dataframe stored in file "dataframe" 
    print(df2) 

が出力:

income user 
0 40000 Bob 
1 50000 Jane 
2 42000 Alice 

shelveでそれを行うには:

別のファイルにデータフレームを読み取るために
import pandas as pd 
import shelve 
df = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice'], 
        'income': [40000, 50000, 42000]}) 
with shelve.open('dataframe2') as shelf: 
    shelf['df'] = df    # store the dataframe in file "dataframe" 

import shelve 
with shelve.open('dataframe2') as shelf: 
    print(shelf['df'])    # read the dataframe 

が出力:場合

print "df = pd.DataFrame(%s)" % (str(df.to_dict())) 

income user 
0 40000 Bob 
1 50000 Jane 
2 42000 Alice 
+0

質問に「pythonコードを生成する」と明記されています。これにはいくつかの理由があります。おそらく、読み取り/書き込みファイルシステムにアクセスできないシステム上で実行することです。 pickleもshelveも、Pythonコードを作成しません。 – madoki

1

あなたはDATAFRAME上to_dict()メソッドを使用することを試みることができますデータにNaNが含まれている場合は、float( 'nan')で置き換える必要があります:

print "df = pd.DataFrame(%s)" % (str(df.to_dict()).replace(" nan"," float('nan')"))