亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 DatetimeIndex 上使用 .loc 來檢索特定日期的值 (KeyError

在 DatetimeIndex 上使用 .loc 來檢索特定日期的值 (KeyError

鳳凰求蠱 2023-09-19 14:57:14
我正在嘗試在數據幀上使用 .loc 檢索特定值。這曾經有效,但我已經升級到最新版本的 Pandas,它不再有效。請參閱下面的示例數據和代碼,有人知道這里發生了什么嗎?樣本數據            Open        High        Low         Close       VolumeDate                    2020-09-24  2906.500000 2962.000000 2871.000000 2960.469971 61179002020-09-25  3033.840088 3133.989990 3000.199951 3128.989990 6948800代碼import pandas as pdfrom datetime import date, timedeltaimport datetimeyesterday = date.today() - timedelta(3)symbol_data.loc[yesterday]['Close']過去,它會檢索值“3128.989990”,這是 2020 年 9 月 25 日的收盤價?,F在我得到“KeyError: datetime.date(2020, 9, 25)”。當我查看索引時,它顯示 DatetimeIndex(['2020-09-24', '2020-09-25'], dtype='datetime64[ns]', name='Date', freq=None)如果我傳遞字符串值,它就會起作用。但我需要使用我的變量來計算日期。symbol_data.loc['2020-09-25']['Close']  ##this works, but I don't want to use a hard coded date
查看完整描述

2 回答

?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

最近的 pandas 版本不允許通過 python dattetime 對象進行切片.loc。.at我被它擊中了,所以我知道。您需要將其轉換為 pandasTimestamp或使用您已經發現的字符串。要將其包裝到 pandas Timestamp,只需將變量傳遞給pd.Timestamp

In [44]: print(df.loc[pd.Timestamp(date.today() - timedelta(3)), 'Close'])

輸出:

3128.98999


查看完整回答
反對 回復 2023-09-19
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

與特倫頓的建議類似,但鏈接在一起normalize以獲得確切的日期。另外,盡可能避免索引鏈接


yesterday = pd.Timestamp.now().normalize() - pd.Timedelta(days=3)

df.loc[yesterday, 'Close']

# out

# 3128.98999


查看完整回答
反對 回復 2023-09-19
  • 2 回答
  • 0 關注
  • 212 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號