Python 添加两列时的NaN值
我有两个具有不同索引的数据帧,我想对这两个数据帧中的同一列求和。 我尝试了以下方法,但给出了NaN值 结果['normal']=df['normal']+tmp['normal'] 我想要的其实是:Python 添加两列时的NaN值,python,pandas,Python,Pandas,我有两个具有不同索引的数据帧,我想对这两个数据帧中的同一列求和。 我尝试了以下方法,但给出了NaN值 结果['normal']=df['normal']+tmp['normal'] 我想要的其实是: 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
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
这里需要按日期时间对齐,因此首先使用DatetimeIndex,然后使用:
这里需要按日期时间对齐,因此首先使用DatetimeIndex,然后使用: : :
必须首先在数据帧上设置正确的索引,然后使用日期索引添加:
必须首先在数据帧上设置正确的索引,然后使用日期索引添加: 你可以试试这个
pd.concat([df, tmp]).groupby('date', as_index=False)["Anomaly"].sum()
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
你可以试试这个
pd.concat([df, tmp]).groupby('date', as_index=False)["Anomaly"].sum()
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
正确,但这只会删除其他列!在我的问题中,我试图将其最小化,因此省略了其他列。我如何保存它们?@Mohame Belahcen所有列都是数字?然后使用result=df.addtmp,在设置索引后填充\u value=0.reset\u索引。@Mohamed Belahcen,所以我建议创建一个包含多列和预期输出的新问题。请同时添加数字和字符串列。正确,但这只会删除其他列!在我的问题中,我试图将其最小化,因此省略了其他列。我如何保存它们?@Mohame Belahcen所有列都是数字?然后使用result=df.addtmp,在设置索引后填充\u value=0.reset\u索引。@Mohamed Belahcen,所以我建议创建一个包含多列和预期输出的新问题。请添加数字和字符串列。我非常喜欢这个答案。它简单、高效并且保留了整数数据类型。回答得不错。然而,我想保留我的df中没有提出问题的其他列,以使其最小化。我非常喜欢这个答案。它简单、高效并且保留了整数数据类型。回答得不错。然而,我想保留df中没有提出问题的其他列,以使其最小化
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
tmp1 = tmp.set_index('date')
result = df.set_index('date')
result.loc[tmp1.index] += tmp1
result.reset_index(inplace=True)
pd.concat([df, tmp]).groupby('date', as_index=False)["Anomaly"].sum()
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