我有一个如下所示的数据框:
data = pd.DataFrame({'Tissues':['a1','x2','y3','b','c1','v2','w3'], 'M':[1,2,3,4,5,6,7], 'F':[8,9,10,11,12,13,14]})
data = data.set_index('Tissues')
数据框是:
M F
Tissues
a1 1 8
x2 2 9
y3 3 10
b 4 11
c1 5 12
v2 6 13
w3 7 14
还有两个字典:
wts_m1 = {'a1':0.5, 'x2':0.25, 'y3':0.25}
wts_m2 = {'c1':0.333, 'v2': 0.667}
我想向名为“m1”的数据帧添加一行,其中“M”的值由以下公式给出:1x0.5+2*0.25+3*0.25
F' 由 8x0.5+9*0.25+10*0.25
给出,其中 0.5、0.25 和 0.25 来自 wts_m1。
对于 m2 也类似,权重来自 wts_m2。
最佳答案
这里有一个方法:
# calculate values
M = (data.index.map(wts_m1) * data['M']).sum()
F = (data.index.map(wts_m1) * data['F']).sum()
# create the row as df
sr = pd.DataFrame({'M': [M,],'F': [F,]}, index=['m1'])
# join data
pd.concat([data, sr], axis=0)
a1 1.00 8.00
x2 2.00 9.00
y3 3.00 10.00
b 4.00 11.00
c1 5.00 12.00
c2 6.00 13.00
c3 7.00 14.00
m1 1.75 8.75
您还可以这样做:
data.loc['m1'] = [M, F]
关于python - 使用公式将行添加到数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59615905/