2017-08-24 61 views
0

我目前正在處理一組具有雙頭的類似DataFrames。 它們具有以下結構:是否可以在單個文件中寫入和讀取多個DataFrame?

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標題列的在所述第二頭中的位置行。我目前想知道是否有一種簡單的方法將所有這些DataFrame保存/讀取到單個CSV文件中或從中讀取,而不是爲每個CSV文件都有不同的CSV文件。

+1

不Excel中工作?您可以將每個df保存在單獨的工作表中。 –

+0

使用純文本CSV文件會更好,但excel也可以。 –

+0

你的問題是什麼?這聽起來像你遇到的問題涉及標題不一致,但你說「哪些可以使所有這些都相同」...如果你問「可以讀熊貓可以讀/寫單個csv或多個csvs「的答案是肯定的。進入哪個方向取決於場景。 –

回答

1

不幸的是,沒有存儲多個dataframes在一個CSV任何合理的方式,使得檢索每個人會不會過於繁瑣,但你可以使用pd.ExcelWriter並保存到單獨的表在單個.xlsx文件:

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]] 

然後,將兩者連接起來dataframes(Merge, join, and concatenate):

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

我不知道你想怎麼處理你的頭的第二行(現在,它只是用兩個子列,這不是很優雅)。如果,你的觀點,該行是沒有意義的,只是重置您的標題像你想之前來連接:

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=',') 
相關問題