【问题标题】:Adding NaN values comparing with another dataframe添加与另一个数据框比较的 NaN 值
【发布时间】:2019-11-09 22:29:32
【问题描述】:

我有一个数据框 df_a 作为 -

Date         Quantity
2019-02-01     345
2019-02-09     570
2019-03-10     784
2019-03-19     880
2019-04-05    1134
2019-05-12    1477
2019-07-21    2190

然而,另一个从 df_b 开始的中途

Date         Quantity
2019-03-19    1840
2019-04-05    2149
2019-05-12    2473
2019-07-21    2992

如何修改此数据框以使前 3 个日期具有 NaN 值,因为我需要绘制此数据并比较两条线?预期输出 -

Date         Quantity
2019-02-01     NaN
2019-02-09     NaN
2019-03-10     NaN
2019-03-19    1840
2019-04-05    2149
2019-05-12    2473
2019-07-21    2992

但是,当我现在绘制它时,它显示 df_b 值从 2019-02-01 而不是 2019-03-19 开始,即绘图没有按应有的中途开始。

【问题讨论】:

  • 您可以使用左连接将 df_b 合并到 df_a
  • pd.merge(df_b, df_a, on='Date', how='outer').drop(columns='Quantity_y').sort_values('Date')

标签: python-3.x pandas dataframe matplotlib


【解决方案1】:

所以你可以在set_index之后做reindex

df2.set_index('Date').reindex(df1.Date).reset_index()
Out[14]: 
         Date  Quantity
0  2019-02-01       NaN
1  2019-02-09       NaN
2  2019-03-10       NaN
3  2019-03-19    1840.0
4  2019-04-05    2149.0
5  2019-05-12    2473.0
6  2019-07-21    2992.0

【讨论】:

    【解决方案2】:

    为什么不创建一个包含两者的框架?

    df_a = df_a.set_index('Date')
    df_b = df_b.set_index('Date')
    
    df_a['QuantityB] = db_b['Quantity']
    

    【讨论】:

      猜你喜欢
      • 2023-02-15
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 2020-08-13
      • 2021-12-24
      • 1970-01-01
      • 2022-08-10
      • 1970-01-01
      相关资源
      最近更新 更多