Pandas DataFrame .merge没有显示Nan

时间:2018-05-05 15:17:30

标签: pandas dataframe merge

我的数据框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')

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

1 个答案:

答案 0 :(得分:0)

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