Python pd.Dataframe.update将结果放在数据帧的顶部

Python pd.Dataframe.update将结果放在数据帧的顶部,python,pandas,dataframe,indexing,Python,Pandas,Dataframe,Indexing,假设我有两个这样的数据帧: n = {'x':['a','b','c','d','e'], 'y':['1','2','3','4','5'],'z':['0','0','0','0','0']} nf = pd.DataFrame(n) m = {'x':['b','d','e'], 'z':['10','100','1000']} mf = pd.DataFrame(n) 我想用mf数据框中z列的值更新nf数据框中z列的零,只更新包含x列键的行中的值 当我打电话时 nf.update(m

假设我有两个这样的数据帧:

n = {'x':['a','b','c','d','e'], 'y':['1','2','3','4','5'],'z':['0','0','0','0','0']}
nf = pd.DataFrame(n)

m = {'x':['b','d','e'], 'z':['10','100','1000']}
mf = pd.DataFrame(n)
我想用mf数据框中z列的值更新nf数据框中z列的零,只更新包含x列键的行中的值

当我打电话时

nf.update(mf)
我明白了

而不是期望的输出

x y z

a 1 0
b 2 10
c 3 0
d 4 100
e 5 1000

要回答您的问题,您需要匹配两个数据帧的索引,以下是您的方法:

n = {'x':['a','b','c','d','e'], 'y':['1','2','3','4','5'],'z':['0','0','0','0','0']}
nf = pd.DataFrame(n).set_index('x')

m = {'x':['b','d','e'], 'z':['10','100','1000']}
mf = pd.DataFrame(m).set_index('x')

nf.update(mf)
nf = nf.reset_index()

这是因为
.update()
替换与索引相关的值,在您的情况下,您希望它替换与
列x相关的值,那么我该如何做呢?这些答案之一解决了您的问题吗?如果没有,你能提供更多的信息来帮助回答这个问题吗?否则,请考虑将最能解决你的问题的答案标记为(在上/下投票箭头下的复选标记)。看到和
n = {'x':['a','b','c','d','e'], 'y':['1','2','3','4','5'],'z':['0','0','0','0','0']}
nf = pd.DataFrame(n).set_index('x')

m = {'x':['b','d','e'], 'z':['10','100','1000']}
mf = pd.DataFrame(m).set_index('x')

nf.update(mf)
nf = nf.reset_index()