我有以下数据框。
df = pd.DataFrame({'Date': ['01/12/2017', '01/01/2018',' 01/02/2018', '01/03/2018'], 'Output': [17, 16, 4, 21]})
我希望能够从上面的数据框中获取最新的“输出”数字,具体取决于具体的日期。 e.g
Date Output
24/12/2017 17
13/01/2018 16
21/01/2018 16
14/02/2018 4
13/03/2018 21
我看过按日期范围切片,但几乎与此相反。
答案 0 :(得分:1)
如果Date
列未排序,请merge_asof
与sort_values
一起使用:
print (df)
Date
0 24/12/2017
1 13/01/2018
2 21/01/2018
3 14/02/2018
4 13/03/2018
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
df1 = pd.DataFrame({'Date': ['01/12/2017', '01/01/2018',' 01/02/2018', '01/03/2018'],
'Output': [17, 16, 4, 21]})
df1['Date'] = pd.to_datetime(df1['Date'], dayfirst=True)
print (df1)
Date Output
0 2017-12-01 17
1 2018-01-01 16
2 2018-02-01 4
3 2018-03-01 21
#if necessary sort DataFrames by Dates
df = df.sort_values('Date')
df1 = df1.sort_values('Date')
df2 = pd.merge_asof(df, df1, on='Date')
print (df2)
Date Output
0 2017-12-24 17
1 2018-01-13 16
2 2018-01-21 16
3 2018-02-14 4
4 2018-03-13 21