3 回答

TA贡献1818条经验 获得超3个赞
惯用的方法可能是使用 update
In [31]: df2 = pd.DataFrame({(k,'x1'): {'y3': v} for k, v in d.items()}).T
In [32]: df2
Out[32]:
y3
Name1 x1 54
Name3 x1 50
In [33]: df.update(df2)
In [34]: df
Out[34]:
y1 y2 y3
Name1 x1 0.0 0.0 54.0
x2 0.0 0.0 0.0
x3 0.0 0.0 0.0
x4 0.0 0.0 0.0
Name2 x1 0.0 0.0 0.0
x2 0.0 0.0 0.0
x3 0.0 0.0 0.0
x4 0.0 0.0 0.0
Name3 x1 0.0 0.0 50.0
x2 0.0 0.0 0.0
x3 0.0 0.0 0.0
x4 0.0 0.0 0.0
Name4 x1 0.0 0.0 0.0
x2 0.0 0.0 0.0
x3 0.0 0.0 0.0
x4 0.0 0.0 0.0

TA贡献1752条经验 获得超4个赞
您可以创建更新df,然后使用 update
d={'Name1': 54, 'Name3': 50}
updatedf=pd.DataFrame(data=list(d.values()),columns=['y3'],index=pd.MultiIndex.from_arrays([list(d.keys()),['x1','x1']]))
df.update(updatedf)
df
Out[229]:
y1 y2 y3
Name1 x1 0.0 0.0 54.0
x2 0.0 0.0 0.0
x3 0.0 0.0 0.0
x4 0.0 0.0 0.0
Name2 x1 0.0 0.0 0.0
x2 0.0 0.0 0.0
x3 0.0 0.0 0.0
x4 0.0 0.0 0.0
Name3 x1 0.0 0.0 50.0
x2 0.0 0.0 0.0
x3 0.0 0.0 0.0
x4 0.0 0.0 0.0
Name4 x1 0.0 0.0 0.0
x2 0.0 0.0 0.0
x3 0.0 0.0 0.0
x4 0.0 0.0 0.0

TA贡献1866条经验 获得超5个赞
有很多方法可以做到这一点,一种简单的方法是使用.loc索引器:
d = {'Name1': 54, 'Name3': 50}
for i in d.keys():
df.loc[i,'x1']['y3'] = d[i]
添加回答
举报