我有两个这样的数据帧
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
代替了1df3 = 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