2017-03-19 13 views
0

2つの変数の可能な組み合わせごとに1つずつ異なるdfを作成したいとします(両方の変数に3つの項目があるので、組み合わせは9です)。変数の値に応じてデータフレームを分割するループ

各dfには、変数の値に基づいてdf_A_Nなどの名前を付ける必要があります。

ここに私の意図が、私は名前を割り当てる以上の変数に一般ことはできません。

df = pd.DataFrame({'v1': pd.Categorical(["A","A","AA","AAA"]),'v2': pd.Categorical(["N","N","W","E"])}) 
df 

n = [] 
for i in df.v1: 
    if i not in n: 
     n.append(i) 
print (n) 

for i in n: 
    df_new=df[df.v1==i] 

df_new 

期待出力

df_new_A_N = pd.DataFrame({ 'V1' の例:pd.Categorical (["A"])、 "v2":pd.Categorical(["N"])})

df_new_A_W = pd.DataFrame({'v1':pd.Categorical(["A"]) 'v2':pd.Categorical(["W"])})

など

+0

予想される出力を追加できますか? –

+0

メインテキストで行われました、ありがとう – progster

答えて

1

複数のシートを1つのドキュメントに保存するには、ExcelWriterを使用する必要があります(私が知る限り)。質問の2番目の部分に対処するには、以下を試してください:

writer = pd.ExcelWriter(r"/yourpath/excel_doc.xlsx") 
for i in df.v1.unique(): 
    for x in df.v2.unique(): 
     temp = df[(df['v1'] == i) & (df['v2'] == x)] 
     temp.to_excel(writer, "df_"+i+"_"+x) 

と同じ構造です。

1

はこれをしたいと思う理由は分からないのですが、ここで一つの方法だ:

for i in df.v1.unique(): 
    for x in df.v2.unique(): 
     globals()["df_"+i+"_"+x] = df[(df['v1'] == i) & (df['v2'] == x)] 

あり、これを行うためのデータフレームの方法かもしれませんが、私はそれを使用していません。

+0

ありがとう!私の最終的な目標は、実際の作業では、変数の可能な組み合わせごとに1枚のExcelレポートを生成しています。私はこの種のアプローチが有用だと思うが、もちろん私は他の人の道に開かれていると思う。 – progster

+0

助けがあれば、これを答えとしてマークできますか?私はあなたの質問の第二の部分を私はコンピュータの前に戻っているときに対処します。このために個別のデータフレームを作成する必要はありません。 –

関連する問題