2017-01-06 16 views
5

Mam następujący dataframe:Jak wstawić słowniki ostatnio wierszy pandy DataFrame

import pandas as pd 
df = pd.DataFrame({'id':['a','b','c','d','e'], 
        'Sample1':[-14,-90,-90,-96,-91], 
        'Sample2':[-103,0,-110,-114,-114], 
        'Sample3':[1,2.3,3,5,6], 
}) 

df.set_index('id', inplace=True) 
df 

wygląda to tak:

Sample1 Sample2 Sample3 
id 
a  -14  -103  1.0 
b  -90  0  2.3 
c  -90  -110  3.0 
d  -96  -114  5.0 
e  -91  -114  6.0 

chciałbym wstawić następujący słownika korzystał

mydict = { 
    "Sample1": 0.000000000001, 
    "Sample3": 0.039690000000000003, 
    "Sample2": 0.05824 
} 

    mydict2 = { 
     "Sample1": 0.7, 
     "Sample3": 0.3, 
     "Sample2": 0.8 
    } 

jako ostatnia kolumna z nazwami indeksu (wiersz) SRT i SRT2.

Uzyskano

Sample1 Sample2 Sample3 
id 
a  -14  -103  1.0 
b  -90  0  2.3 
c  -90  -110  3.0 
d  -96  -114  5.0 
e  -91  -114  6.0 
SRT  0.23 0.39  0.05 
SRT2 0.7  0.3  0.8 

Jak mogę to osiągnąć?

Odpowiedz

7

Można użyć loc:

df.loc['SRT'] = pd.Series(mydict) 
df.loc['SRT2'] = pd.Series(mydict2) 

print (df) 
     Sample1 Sample2 Sample3 
id         
a -14.00000 -103.00000 1.00000 
b -90.00000 0.00000 2.30000 
c -90.00000 -110.00000 3.00000 
d -96.00000 -114.00000 5.00000 
e -91.00000 -114.00000 6.00000 
SRT 0.02321 0.05824 0.03969 
SRT2 0.70000 0.80000 0.30000 

Rozwiązanie z concat:

df1 = pd.DataFrame([mydict, mydict2], index=['SRT','SRT2']) 
print (df1) 
     Sample1 Sample2 Sample3 
SRT 0.02321 0.05824 0.03969 
SRT2 0.70000 0.80000 0.30000 

print (pd.concat([df,df1])) 
     Sample1 Sample2 Sample3 
a -14.00000 -103.00000 1.00000 
b -90.00000 0.00000 2.30000 
c -90.00000 -110.00000 3.00000 
d -96.00000 -114.00000 5.00000 
e -91.00000 -114.00000 6.00000 
SRT 0.02321 0.05824 0.03969 
SRT2 0.70000 0.80000 0.30000 
3

użyciu append

df.append(pd.Series(mydict, name='SRT')) 

     Sample1 Sample2 Sample3 
id        
a -14.00000 -103.00000 1.00000 
b -90.00000 0.00000 2.30000 
c -90.00000 -110.00000 3.00000 
d -96.00000 -114.00000 5.00000 
e -91.00000 -114.00000 6.00000 
SRT 0.02321 0.05824 0.03969 

df.append(pd.DataFrame.from_records([mydict, mydict2], ['SRT', 'SRT1'])) 

     Sample1 Sample2 Sample3 
a -14.00000 -103.00000 1.00000 
b -90.00000 0.00000 2.30000 
c -90.00000 -110.00000 3.00000 
d -96.00000 -114.00000 5.00000 
e -91.00000 -114.00000 6.00000 
SRT 0.02321 0.05824 0.03969 
SRT1 0.70000 0.80000 0.30000 
-1
a=df.append(pd.DataFrame(mydict,index=[0])) 
a=a.T 
a=a.rename(columns={0:'SRT'}) 
a=a.T