在 Python 中使用 .between 方法時遇到一些問題。
我有一個由 ~59000 條記錄組成的簡單資料集

日期格式為 DD/MM/YYYY,我想過濾 2014 年四月的天數。
psi_df = pd.read_csv('thecsvfile.csv')
psi_west_df = psi_df[['24-hr_psi','west']]
april_records = psi_west_df[psi_west_df['24-hr_psi'].between('1/4/2014','31/4/2014')]
april_records.head(100)

我收到了日期突然從 3/4/2014(4 月 3 日)到 10/4/2014(4 月 10 日)的輸出。這種模式每個月和每年都會重復出現,直到 2020 年(該資料集的最后一年),這不是我獲取 2014 年 4 月資料的初衷。
由于我對 python 還是比較陌生,我決定在 Excel 中執行一些修復。我將日期和時間列分開,并使用更新的必要語法重新運行代碼。

psi_df = pd.read_csv('psi_new.csv')
psi_west_df = psi_df[['date','west']]
april_records = psi_west_df[psi_west_df['date'].between('1/4/2014','31/4/2014')]
april_records.head(100)
我仍然面臨同樣的問題,現在,我完全不明白為什么會發生這種情況。我是否錯誤地使用了 .between 方法?尋求每個人的善意指導和指示,了解為什么會發生這種情況。非常感謝,非常感謝大家。
我使用的 csv 檔案可以從這個網站獲得:
uj5u.com熱心網友回復:
第一個問題是您的日期列不是日期而是物件列。
使用 pandasto_datetime函式確保您的列確實是日期。
psi_west_df['date'] = pd.to_datetime(psi_west_df['date'], format='%d/%m/%Y')
在該列實際上是一個日期列之后,為了讓between函式毫無問題地運行,您應該給它兩個日期物件而不是像這樣的字串物件:
start_day = pd.to_datetime('1/4/2014', format='%d/%m/%Y')
end_day = pd.to_datetime('30/4/2014', format='%d/%m/%Y')
april_records = psi_west_df[psi_west_df['date'].between(start_day, end_day)]
所以大家一起:
psi_df = pd.read_csv('psi_new.csv')
psi_west_df = psi_df[['date','west']]
psi_west_df['date'] = pd.to_datetime(psi_west_df['date'], format='%d/%m/%Y')
start_day = pd.to_datetime('1/4/2014', format='%d/%m/%Y')
end_day = pd.to_datetime('30/4/2014', format='%d/%m/%Y')
april_records = psi_west_df[psi_west_df['date'].between(start_day, end_day)]
april_records.head(100)
注意- 此代碼應該在您使用 excel 更改資料后處理資料,這意味著您有一個單獨的資料和時間列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/396400.html
下一篇:React回應式設計重新排序組件
