【问题标题】:pd.Dataframe.update puts the result at the top of the dataframepd.Dataframe.update 将结果放在数据框的顶部
【发布时间】:2021-06-25 06:09:52
【问题描述】:

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

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

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

而不是所需的输出

x y z

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

【问题讨论】:

  • 这是因为 .update() 替换相对于索引的值,在您的情况下,您希望它替换相对于 column x 的值
  • 那我该怎么做呢?
  • 这些答案之一是否解决了您的问题?如果没有,您能否提供更多信息来帮助回答?否则,请考虑标记最能解决您的问题的答案(上/下投票箭头下的复选标记)。见What should I do when someone answers my question?How does accepting an answer work?

标签: python pandas dataframe indexing


【解决方案1】:

要回答您的问题,您需要匹配两个数据帧的索引,这里是如何做到的:

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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    相关资源
    最近更新 更多