【问题标题】:Pandas DataFrame .merge not displaying NanPandas DataFrame .merge 不显示 Nan
【发布时间】:2018-10-15 21:20:16
【问题描述】:

我有一个数据框 df 仅包含从 2007-01-01 到 2018-04-30 的日期(不是索引) 我有第二个数据框子包含从 2007-01-01 到 2018-04-20 的日期和值 我想要一个结果数据框 res,其中包含 df 的所有日期和 sub 的值在正确的位置。我正在使用

res = pd.merge(df, sub, on='date', how='outer')

我希望在 res 数据框中有 2018-04-21 到 2018-04-30 的 NaN。 相反,我得到 res 只有 2018-04-20 的值(它截断了缺失的值) 为什么?

【问题讨论】:

  • 能否提供样本数据?

标签: pandas dataframe merge


【解决方案1】:

IIUC,设置索引然后加入在这里会很有用:

## create sample data
df = pd.DataFrame({'mdates': pd.date_range('12/13/1989', periods=100, freq='D')})
df['val'] = np.random.randint(10, 500, 100)

df1 = pd.DataFrame({'mdates': pd.date_range('12/01/1989', periods=50, freq='D')})

## join data
df1 = df1.set_index('mdates').join(df.set_index('mdates'))

print(df1.head(20))

              val
mdates           
1989-12-01    NaN
1989-12-02    NaN
1989-12-03    NaN
1989-12-04    NaN
1989-12-05    NaN
1989-12-06    NaN
1989-12-07    NaN
1989-12-08    NaN
1989-12-09    NaN
1989-12-10    NaN
1989-12-11    NaN
1989-12-12    NaN
1989-12-13  215.0
1989-12-14  189.0
1989-12-15   97.0
1989-12-16  264.0
1989-12-17  419.0
1989-12-18   57.0
1989-12-19  376.0
1989-12-20  448.0

【讨论】:

    猜你喜欢
    • 2018-01-14
    • 2021-12-30
    • 2018-11-14
    • 2021-05-28
    • 1970-01-01
    • 2015-02-14
    • 2021-06-20
    • 2016-02-02
    • 2018-09-21
    相关资源
    最近更新 更多