首页 > 解决方案 > 根据共享索引将一列添加到其他数据框中的所有列

问题描述

我正在尝试将 dataframe 中一列的值添加到 dataframedf2的所有列中df。它们共享一个(唯一的)索引,但顺序可能不同。

df = pd.DataFrame({"id":[1,2,3], "value1":[1,2,3], "value2":[4,5,6]}).set_index("id")
df2 = pd.DataFrame({"id":[3,2], "add":[4,5]}).set_index("id")

预期结果:

result = pd.DataFrame({"id":[1,2,3], "value1":[1,2+5,3+4], "value2":[4,5+5,6+4]}).set_index("id")

我可以合并并添加,但我想知道是否有更 numpy 风格的解决方案。我试过df+df2了,结果NaN无处不在。

标签: pythonpandas

解决方案


我没有 numpy 风格的答案,但这里是 pandas 风格的答案:

df = pd.DataFrame({"id":[1,2,3], "value1":[1,2,3], "value2":[4,5,6]}).set_index("id")
df2 = pd.DataFrame({"id":[3,2], "add":[4,5]}).set_index("id")

print(df.update(df + df2))

输出:

    value1  value2
id
1        1       4
2        7      10
3        7      10

推荐阅读