假設我有一個潘達斯資料框架,如下圖所示:
我有一個潘達斯資料框架。
------------ -------
| 日期 | 價格 |
------------ -------
| 01/01/2021 | 10 !
| 01/02/2021 | 20 !
| 01/03/2021 | 30 !
| 01/05/2021 | 40 !
| 01/08/2021 | 20 !
| 01/09/2021 | 10 !
------------ -------
上述資料框可以用下面的代碼生成:
df = pd. DataFrame({'Date': ['2021-01-01'/span>, '2021-01-02'/span>, '2021-01-03'/span>, '2021-01-05'/span>, '2021-01-08'/span>, '2021-01-09'/span>] 。
'Price': [10, 20, 30, 40, 20, 10]})
df['Date'] = pd.to_datetime(df['Date'] )
現在給定一個存盤在變數end_date的日期。第一步是查找該日期是否存在于
資料框架中是否存在。這可以通過下面的代碼來完成:
if end_date in df.Date.values。
pass
else:
# 查找最后的可用日期。
什么是最優雅的方式來查找資料框架中的最后可用日期。
例如,如果end_date = '2021-01-10'。由于它不存在于資料框中,我希望end_date值被設定為2021-01-09。
同樣地,如果end_date = 2021-01-07,我希望end_date值被設定為2021-01-05。
另外,如果end_date = 2021-01-08 end_date將不會被覆寫,并保持原樣,即end_date = 2021-01-08。
uj5u.com熱心網友回復:
其他答案是假設日期在你的資料框架中總是按順序排列。
由于你的日期是可排序的,你可以直接使用比較運算子(注意,即使你將它們保持為字串,這也會起作用,因為你所使用的格式是可按字母排序的)。
為了得到最后的可用日期,首先過濾掉end_date之后的日期,然后找到最大值:
end_date = df[df['Date'] <= end_date] ['Date'].max()
uj5u.com熱心網友回復:
你可以用loc和iloc試試:
end_date = "2021-01-07"
print(df.loc[df['Date'] <= end_date, 'Date'].iloc[-1].date())
輸出:
202101-05
或者:
end_date = "2021-01-07"/span>
print(df.loc[df['Date'] <= end_date, 'Date'].max() 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/311899.html
標籤:
上一篇:DateTimeParseException意外的結果
下一篇:如何正確決議日期時間?[已關閉]
