我试图将数据框df2
中一列的值添加到数据框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
。
我没有一个傻瓜式的答案,但这里有一个熊猫式的答案:
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
您可以尝试重新索引df2,然后添加:
df.add(df2['add'].reindex(df.index, fill_value=0), axis=0)
输出:
value1 value2
id
1 1 4
2 7 10
3 7 10
注意下面的代码抛出了一个错误:
df.add(df2['add'], fill_value=0, axis=0)