添加两个没有指示值的数据帧



我有两个这样的数据帧

data_1 = {
"price": [1]*8
}
data_2 = {
"price": [3, 3, 3],
}
df1 = pd.DataFrame(data_1, index=pd.date_range('2021/01/01', '2021/01/08', periods=8))
df2 = pd.DataFrame(data_2, index=pd.date_range('2021/01/03', '2021/01/05', periods=3))

但是当我把它们加在一起时,我得到了下面的结果,但问题是它用NaN

代替了1
df3 = df1['price'] + df2['price']
>>>
2021-01-01    NaN
2021-01-02    NaN
2021-01-03    4.0
2021-01-04    4.0
2021-01-05    4.0
2021-01-06    NaN
2021-01-07    NaN
2021-01-08    NaN

我想要的是这个

2021-01-01    1
2021-01-02    1
2021-01-03    4.0
2021-01-04    4.0
2021-01-05    4.0
2021-01-06    1
2021-01-07    1
2021-01-08    1

提前谢谢你。

您可以使用.add代替数据帧:

df = df1.add(df2, fill_value=0)

结果:

2021-01-01    1.0
2021-01-02    1.0
2021-01-03    4.0
2021-01-04    4.0
2021-01-05    4.0
2021-01-06    1.0
2021-01-07    1.0
2021-01-08    1.0
Name: price, dtype: float64

这将导致带有额外列的dfs出现问题,所以要小心。有关系列特定的(更健壮的)解决方案,请参阅@jezrael答案

使用Series.add方法与fill_value=0:

df3 = df1['price'].add(df2['price'], fill_value=0).astype(int)
print (df3)
2021-01-01    1
2021-01-02    1
2021-01-03    4
2021-01-04    4
2021-01-05    4
2021-01-06    1
2021-01-07    1
2021-01-08    1
Name: price, dtype: int32

相关内容

最新更新