1

这是我的第一个数据框df1

                   Open       High         Low      Close
Date                
2018-07-16  2797.360107 2801.189941 2793.389893 2798.429932
2018-07-17  2789.340088 2814.189941 2789.239990 2809.550049
2018-07-18  2811.350098 2816.760010 2805.889893 2815.620117
2018-07-19  2809.370117 2812.050049 2799.770020 2804.489990
2018-07-20  2804.550049 2809.699951 2800.010010 2801.830078

现在我想添加另一个数据框中df2的 7 月 21 日,例如,

          Date   Prediction 
0   2018-07-25   2111.111

现在我应该如何添加索引和与之对应2018-07-21df1数据应该是df2['Prediction']列,Close否则其他列可以是0。

所以最终的df应该是这样的,

                Open          High         Low      Close
Date                
2018-07-16  2797.360107 2801.189941 2793.389893 2798.429932
2018-07-17  2789.340088 2814.189941 2789.239990 2809.550049
2018-07-18  2811.350098 2816.760010 2805.889893 2815.620117
2018-07-19  2809.370117 2812.050049 2799.770020 2804.489990
2018-07-20  2804.550049 2809.699951 2800.010010 2801.830078
2018-07-21  0           0            0          2111.111
4

2 回答 2

1

只需添加另一行:

df.loc['2018-07-25', 'Close'] = 2111.111

您将在其他列中有一堆关于 NaN 的内容。如果需要,可以用 0 填充它们:

df.fillna(0, inplace=True)
于 2018-07-22T20:36:49.627 回答
0

方法一:pd.concat

您可以使用pd.concat,只需重命名df2列以匹配所需的列df1

new_df = (pd.concat([df1,
                     df2.set_index('Date')
                     .rename(columns={'Prediction':'Close'})])
          .fillna(0)
          [df.columns])

>>> new_df
                   Open         High          Low        Close
Date                                                          
2018-07-16  2797.360107  2801.189941  2793.389893  2798.429932
2018-07-17  2789.340088  2814.189941  2789.239990  2809.550049
2018-07-18  2811.350098  2816.760010  2805.889893  2815.620117
2018-07-19  2809.370117  2812.050049  2799.770020  2804.489990
2018-07-20  2804.550049  2809.699951  2800.010010  2801.830078
2018-07-25     0.000000     0.000000     0.000000  2111.111000

方法二:merge

或者用于merge进行外部合并。您仍然需要更改列名df2以匹配您希望列结束的位置

new_df = (df1.reset_index()
          .merge(df2.rename(columns={'Prediction':'Close'}),
                 how='outer')
          .fillna(0)
          .set_index('Date'))

>>> new_df
                   Open         High          Low        Close
Date                                                          
2018-07-16  2797.360107  2801.189941  2793.389893  2798.429932
2018-07-17  2789.340088  2814.189941  2789.239990  2809.550049
2018-07-18  2811.350098  2816.760010  2805.889893  2815.620117
2018-07-19  2809.370117  2812.050049  2799.770020  2804.489990
2018-07-20  2804.550049  2809.699951  2800.010010  2801.830078
2018-07-25     0.000000     0.000000     0.000000  2111.111000
于 2018-07-22T20:31:27.790 回答