2017-02-21 1 views
1

Ich versuche, zwei Datenrahmen zu verketten:Pandas concat Datenrahmen - halte ursprüngliche Reihenfolge des Index

df2: 
CU Pmt 2017-02-01 
h b  15 
h d  12 
h a  13 

und df1:

CU Pmt 'Total/Max/Min' 
h b  20 
h d  23 
h a  22 
a b  16 
a d  13 
a a  14 

so dass df3:

CU Pmt 2017-02-01 2017-02-02 
h b  15   20 
h d  12   23 
h a  13   22 
a b  NaN   16 
a d  NaN   13 
a a  Nan   14 

Ich bin Verwenden eines Multiindex von index_col = [0,1] für beide

Das ist, was ich habe:

date = '2017-02-02' 
df1 = pd.read_csv(r'Data\2017-02\2017-02-02\Aggregated\Aggregated_Daily_All.csv', usecols=['CU', 'Parameters', 'Total/Max/Min'], index_col =[0,1]) 
df1 = df1.rename(columns = {'Total/Max/Min':date}) 

df2 = pd.read_csv(r'Data\2017-02\MonthlyData\February2017.csv', index_col = [0,1]) 
df3 = pd.concat([df2, df1], axis=1) 
df3.to_csv(r'Data\2017-02\MonthlyData\February2017.csv') 

jedoch df3 kommt aus wie:

CU Pmt 2017-02-01 2017-02-02 
a a  NaN   14 
a b  NaN   16 
a d  Nan   13 
h a  13   22 
h b  15   20 
h d  12   23 

Welche CU und Pmt (die beiden Indexspalten) in alphabetischer Reihenfolge hat. Wie ist es möglich, die ursprüngliche Reihenfolge beizubehalten, sodass sie für alle neuen Indizes, die für ein neues Datum hinzugefügt werden, unten hinzugefügt werden?

Antwort

1

Sie können reindex versuchen, wenn Werte von df1.index Werte von df2.index enthält:

df3 = pd.concat([df2, df1], axis=1).reindex(df1.index) 
print (df3) 
     2017-02-01 'Total/Max/Min' 
CU Pmt        
h b   15.0    20 
    d   12.0    23 
    a   13.0    22 
a b   NaN    16 
    d   NaN    13 
    a   NaN    14 
Verwandte Themen