我有两个数据帧,每个数据帧都有很多列和行。每行中的元素是相同的,但它们的索引是不同的。我想添加两个数据帧的一列的元素。
作为一个基本示例,请考虑以下两个系列:
Sr1 = pd.Series([1,2,3,4], index = [0, 1, 2, 3])
Sr2 = pd.Series([3,4,-3,6], index = [1, 2, 3, 4])
假设每行包含相同的元素,仅在不同的索引中。我想添加两列,最后得到一个包含[4,6,0,10]
的新列。相反,由于索引,我得到[nan, 5, 7, 1]
。
有没有一种简单的方法可以在不改变指数的情况下解决这个问题?
我希望输出为系列。
答案 0 :(得分:2)
您可以使用reset_index(drop=True)
:
Sr1 = pd.Series([1,2,3,4], index = [0, 1, 2, 3])
Sr2 = pd.Series([3,4,-3,6], index = [1, 2, 3, 4])
Sr1 + Sr2.reset_index(drop=True)
0 4
1 6
2 0
3 10
dtype: int64
此外,
pd.Series(Sr1.values + Sr2.values, index=Sr1.index)
答案 1 :(得分:1)
一种方法是在一个或多个系列中使用reset_index
:
Sr1 = pd.Series([1,2,3,4], index = [0, 1, 2, 3])
Sr2 = pd.Series([3,4,-3,6], index = [1, 2, 3, 4])
res = Sr1 + Sr2.reset_index(drop=True)
0 4
1 6
2 0
3 10
dtype: int64
答案 2 :(得分:0)
使用zip
<强>实施例强>
import pandas as pd
Sr1 = pd.Series([1,2,3,4], index = [0, 1, 2, 3])
Sr2 = pd.Series([3,4,-3,6], index = [1, 2, 3, 4])
sr3 = [sum(i) for i in zip(Sr1, Sr2)]
print(sr3)
<强>输出:强>
[4, 6, 0, 10]
答案 3 :(得分:0)
你可以使用.values,这会给你一个numpy表示,然后你可以像这样添加它们:
Sr1.values + Sr2.values