如何将单列DataFrame追加到另一DataFrame并按索引对齐补NaN
解决方法
你之前合并失败的核心原因是两个DataFrame的默认索引没有对齐到你需要的位置:Predicted_Values的3条数据默认索引为0/1/2,直接合并会匹配到Actual_Values的前3行,和你的需求刚好相反。
方法1:重置索引后join
先调整预测值DataFrame的索引,使其对齐实际值DataFrame的最后3行,再直接拼接即可:
import pandas as pd # 示例数据构造 df_actual = pd.DataFrame({'Actual_Values': [0.60]*5}) df_pred = pd.DataFrame({'Predicted_Values': [0.60]*3}) # 调整预测值索引,起始位置为 实际值长度 - 预测值长度 df_pred.index = range(len(df_actual) - len(df_pred), len(df_actual)) # 直接join得到结果 result = df_actual.join(df_pred)
方法2:直接赋值
如果你不想修改原预测值的索引,也可以直接给实际值DataFrame新增列赋值:
import pandas as pd import numpy as np df_actual = pd.DataFrame({'Actual_Values': [0.60]*5}) df_pred = pd.DataFrame({'Predicted_Values': [0.60]*3}) # 先初始化预测值列为空 df_actual['Predicted_Values'] = np.nan # 给最后N行(N为预测值行数)赋值 df_actual.loc[len(df_actual)-len(df_pred):, 'Predicted_Values'] = df_pred['Predicted_Values'].values
两种方法得到的结果都符合你的预期:
Actual_Values Predicted_Values 0 0.6 NaN 1 0.6 NaN 2 0.6 0.6 3 0.6 0.6 4 0.6 0.6
内容的提问来源于stack exchange,提问作者Pardeep Kumar
相关产品推荐
相关产品推荐

