首页 > 解决方案 > 添加两个数据框而不截断值

问题描述

我有两个这样的数据框

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

提前非常感谢。

标签: pythonpython-3.xpandasdataframe

解决方案


使用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

推荐阅读