2016-09-19 2 views
1

How would I go about adding a row to the top of this dataframe. This is downloaded data. I cannot use a specific row index in the formula because the first Datetime indice changes all the time. I cannot also use a specific label for the inner index as it could be Datetime. Is there a way to generalize this?wie eine Zeile zu einem so aussehen für Datum und Uhrzeit Multiindex Panda Dataframe

I tried this

df[df.index.min()[0])) - dt.timedelta(minutes=5), :] = [list to add] 

however it only add a row at the end of the Dataframe. Sorting,

df.sort_index(inplace=True) 

did not help because I guess I am dealing with 2 levels of index here; which would explain why the row sticks to the bottom of the frame.

     A  B  C  D  E 

2006-04-28 00:00:00          
      A  69.62 69.62 6.518 65.09 69.62 
      B 
      C 
2006-05-01 00:00:00 
      A   71.5 71.5 6.522 65.16 71.5 
      B 
      C 
2006-05-02 00:00:00 
      A  72.34 72.34 6.669 66.55 72.34 
      B 
      C 

Das Endergebnis sollte hinzufügen: X ‚s sind die Elemente in der Liste/Array hinzugefügt werden.

     A  B  C  D  E 
     NEWROW   X1  X2 X3  X4 X5 

2006-04-28 00:00:00          
      A  69.62 69.62 6.518 65.09 69.62 
      B 
      C 
2006-05-01 00:00:00 
      A   71.5 71.5 6.522 65.16 71.5 
      B 
      C 
2006-05-02 00:00:00 
      A  72.34 72.34 6.669 66.55 72.34 
      B 
      C 

Antwort

1

sort_index und sortlevel für mich tun nicht Arbeit mit Multiindex:

So können Sie wenig hack verwenden - append=True erste reset_index mit dem zweiten Ebene Stats, dann sort_index und letzte set_index wieder mit dem Parameter:

df1 = df1.sort_index() 

df1.loc[((df1.index.min()[0]) - dt.timedelta(minutes=5), 'SUM'),:] = 
df1.loc[(slice(None), slice('price')),:].sum() 

df1 = df1.reset_index('Stats') 
df1 = df1.sort_index(axis=0).set_index('Stats', append=True) 
print (df1) 
           A  B  C  D  E 
Date    Stats           
2006-04-27 23:55:00 SUM  213.46 213.46 19.709 196.80 213.46 
2006-04-28 00:00:00 price 69.62 69.62 6.518 65.09 69.62 
        std  NaN  NaN  NaN  NaN  NaN 
        weight  NaN  NaN  NaN  NaN  NaN 
2006-05-01 00:00:00 price 71.50 71.50 6.522 65.16 71.50 
        std  NaN  NaN  NaN  NaN  NaN 
        weight  NaN  NaN  NaN  NaN  NaN 
2006-05-02 00:00:00 price 72.34 72.34 6.669 66.55 72.34 
        std  NaN  NaN  NaN  NaN  NaN 
        weight  NaN  NaN  NaN  NaN  NaN 
+0

hey jezrael :), danke! Allerdings bekomme ich das: KeyError: 'MultiIndex Slicing erfordert den Index vollständig lexsortiert tuple len (2), lexsort Tiefe (1)' – uniXVanXcel

+1

Versuchen Sie zuerst 'sort_index()', ich füge es zur Lösung hinzu. – jezrael

+0

hast du es wieder getan :))) – uniXVanXcel

Verwandte Themen