我想比較從今年和去年的 1 月 1 日到今天的日期。
示例:獲取日期范圍為 2020 年 1 月 1 日至 11 月 29 日的行 獲取日期范圍為 2021 年 1 月 1 日至 11 月 29 日的行
這是我嘗試過的,也是我想象它完成的唯一方法:
#get year to date dates for last year
current_year = datetime.datetime.now().year
today = datetime.datetime.now().day
last_year = int(current_year) - 1
sales_data_df['Date'] = pd.to_datetime(sales_data_df['Date'])
sales_data_last_year = sales_data_df[sales_data_df['Date'].dt.year == last_year]
sales_data_last_ytd = sales_data_last_year[sales_data_last_year['Date'].dt.day < today]
sales_data_df2 = sales_data_last_ytd.groupby('Id').agg({'Quantity': sum, 'NetAmount': sum})
sales_data_df2['COGS_last_YTD'] = sales_data_df2['Quantity'] * sales_data_df2['NetAmount']
#get year to date dates for this year
sales_data_df['Date'] = pd.to_datetime(sales_data_df['Date'])
sales_data_this_year = sales_data_df[sales_data_df['Date'].dt.year == current_year]
sales_data_ytd = sales_data_last_year[sales_data_this_year['Date'].dt.day < today]
sales_data_df2 = sales_data_ytd.groupby('Id').agg({'Quantity': sum, 'NetAmount': sum})
sales_data_df2['COGS_YTD'] = sales_data_df2['Quantity'] * sales_data_df2['NetAmount']
這是輸出錯誤:
TypeError: '<' not supported between instances of 'int' and 'datetime.datetime'
我對熊貓相當陌生,我不明白為什么錯誤是關于日期格式不匹配的,因為我確保使用 pd_todatetime,我遵循的程序有什么問題?
在不運行相同問題的情況下完成這項作業的替代方法是什么?
uj5u.com熱心網友回復:
我認為有一種更簡單的方法可以做到這一點,我還認為如果您打算使用包含更多資料的代碼,您應該檢查是否存在閏年。
import pandas as pd
today = pd.to_datetime("now")
first_day_2021 = pd.to_datetime("01-01-2021")
today_last_year = today - pd.Timedelta(365, "day")
first_day_2020 = pd.to_datetime("01-01-2020")
如果您有日期時間索引,那么您可以輕松選擇期間。
df[first_day_2021: today]
df[first_day_2020: today_last_year]
uj5u.com熱心網友回復:
似乎您可以直接使用today和current_year作為熊貓日期時間物件的值而不是它們的數值
所以,更具體地說
current_year = datetime.datetime.now()
today = datetime.datetime.now()
似乎您正在將日期today與前一年的同一天進行比較,在這種情況下,我最好的建議是創建一個新變數
from dateutil.relativedelta import relativedelta
one_year_ago = datetime.datetime.now() - relativedelta(years=1)
所以,你可以比較sales_data_df['Date']有one_year_ago
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/370520.html
