У меня есть следующий фрейм данных:

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

Это выглядит следующим образом:

    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

Я хотел бы вставить следующий словарь

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

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

В качестве последнего столбца с именами индексов (строк) SRT и SRT2.

Уступая :

    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

Как я могу этого достичь?

5
neversaint 6 Янв 2017 в 11:03

3 ответа

Лучший ответ

Вы можете использовать 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

Решение с помощью 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
7
jezrael 6 Янв 2017 в 08:25

Используя 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
3
piRSquared 6 Янв 2017 в 08:19
a=df.append(pd.DataFrame(mydict,index=[0]))
a=a.T
a=a.rename(columns={0:'SRT'})
a=a.T
-1
Mahesh 6 Янв 2017 в 08:16