两列相加时的NaN值

时间:2019-06-25 13:23:12

标签: python pandas

我有两个具有不同索引的数据框,我想对两个数据框的同一列求和。 我尝试了以下操作,但给出了NaN值

result['Anomaly'] = df['Anomaly'] + tmp['Anomaly']
df
    date           Anomaly
0 2018-12-06         0
1 2019-01-07         0
2 2019-02-06         1
3 2019-03-06         0
4 2019-04-06         0

tmp
    date           Anomaly
0 2018-12-06         0
1 2019-01-07         1
4 2019-04-06         0

result
    date           Anomaly
0 2018-12-06        0.0
1 2019-01-07        NaN
2 2019-02-06        1.0
3 2019-03-06        0.0
4 2019-04-06        0.0

我想要的实际上是:

result
    date           Anomaly
0 2018-12-06         0
1 2019-01-07         1
2 2019-02-06         1
3 2019-03-06         0
4 2019-04-06         0

4 个答案:

答案 0 :(得分:3)

这里有必要按datetimes对齐,因此请先对DatetimeIndex使用DataFrame.set_index,然后再使用Series.add

df = df.set_index('date')
tmp = tmp.set_index('date')
result = df['Anomaly'].add(tmp['Anomaly'], fill_value=0).reset_index()

答案 1 :(得分:3)

您可以尝试

SELECT

答案 2 :(得分:2)

combine_first()

res = pd.DataFrame({'date':df.date,'Anomaly':tmp.Anomaly.combine_first(df.Anomaly)})
print(res)

         date  Anomaly
0  2018-12-06      0.0
1  2019-01-07      1.0
2  2019-02-06      1.0
3  2019-03-06      0.0
4  2019-04-06      0.0

答案 3 :(得分:0)

您必须首先在数据帧上设置正确的索引,然后使用date索引进行添加:

tmp1 = tmp.set_index('date')
result = df.set_index('date')
result.loc[tmp1.index] += tmp1
result.reset_index(inplace=True)