2017-08-24 2 views
0

私は現在、ダブルヘッダーを持つ一連の同様のDataFramesを扱っています。 これらは以下の構造を有する:複数のDataFramesを1つのファイルに書き込んだり読み込んだりすることはできますか?

age height weight shoe_size 
    RHS height weight shoe_size 
0 8.0 6.0 2.0  1.0 
1 8.0 NaN 2.0  1.0 
2 6.0 1.0 4.0  NaN 
3 5.0 1.0 NaN  0.0 
4 5.0 NaN 1.0  NaN 
5 3.0 0.0 1.0  0.0 

    height weight shoe_size age 
     RHS weight shoe_size age 
0  1.0 1.0  NaN NaN 
1  1.0 2.0  0.0 2.0 
2  1.0 NaN  0.0 5.0 
3  1.0 2.0  0.0 NaN 
4  0.0 1.0  0.0 3.0 

は実際に主な違いは、それらのすべてのために同じことを行うことができる最初のヘッダ行のソート、および第二のヘッダにおけるRHSヘッダ列の位置であります行。私は現在、これらのDataFramesをそれぞれ別々のCSVファイルを持つ代わりに、単一のCSVファイルに/から読み書きする簡単な方法があるかどうか疑問に思っています。

+1

んエクセル作業?各dfを別々のシートに保存することができます。 –

+0

プレーンテキストのCSVファイルを使用する方が良いでしょうが、Excelでも大丈夫です。 –

+0

あなたの質問は何ですか?あなたが遭遇している問題はヘッダーが矛盾していることに関係しているように聞こえますが、あなたは「すべての人が同じにすることができます」と言っています...「パンダが単一のCSVまたは複数のcsvs "答えははいです。どの方向へ進むかはシナリオによって異なります。 –

答えて

1

残念ながら、一つ一つを取得することは過度に面倒なことではないだろうが、あなたは、単一の.xlsxファイルでpd.ExcelWriterを使用して別々のシートに保存することができるような、単一のCSVで複数のデータフレームを格納するための合理的な方法はありません。

は(代わりに、自分の価値観の乱数で)あなたの例をバック取る
import pandas as pd 

writer = pd.ExcelWriter('file.xlsx') 
for i, df in enumerate(df_list): 
    df.to_excel(writer,'sheet{}'.format(i)) 
writer.save() 
0

import pandas as pd 
import numpy as np 

h1 = [['age', 'height', 'weight', 'shoe_size'],['RHS','height','weight','shoe_size']] 
df1 = pd.DataFrame(np.random.randn(3, 4), columns=h1) 

h2 = [['height', 'weight', 'shoe_size','age'],['RHS','weight','shoe_size','age']] 
df2 = pd.DataFrame(np.random.randn(3, 4), columns=h2) 

まず、(How to change the order of DataFrame columns?)あなたの列の順序を変更:

その後
df3 = df2[h1[0]] 

、連結2つのデータフレーム(Merge, join, and concatenate):私はあなたのヘッダーの第二列に対処したいのか分からない

df4 = pd.concat([df1,df3]) 

(今のところ、それはちょうど2つのサブを使用しています列は非常にエレガントではありません)。あなたの視点に、この行は無意味である、もし、あなたが望むように連結する前に、ちょうどあなたのヘッダーをリセットします。

df1.columns=h1[0] 
df3.columns=h1[0] 

df5 = pd.concat([df1,df3]) 

は最後に、CSV形式(pandas.DataFrame.to_csv)で保存:

df4.to_csv('file_name.csv',sep=',') 
関連する問題