我的数据框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的值(它截断了缺失的值) 为什么呢?
答案 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