使用 Pandas 将周数转换为周(日期)
Convert week number to week (date) with Pandas
如何将 dt.week(returns 周数)转换为显示周日期?我当前的代码:
my_net_diet_raw['Date & Time'].dt.week
Returns:
1 22
2 22
3 22
4 22
..
176 30
177 30
178 30
179 30
180 30
Name: Date & Time, Length: 181, dtype: int64
我希望 22 显示为 05-25-2020,23 显示为 06-01-2020,依此类推
数据:
0 19732166 2020-05-31 Breakfast
1 4016406 2020-05-31 Breakfast
2 1132 2020-05-31 Breakfast
3 19732166 2020-05-31 Lunch
4 1009 2020-05-31 Lunch
.. ... ... ...
176 5749 2020-07-23 Lunch
177 20037 2020-07-23 Lunch
178 4159294 2020-07-23 Lunch
179 20402843 2020-07-23 Snack
180 23053329 2020-07-23 Snack
检查
pd.to_datetime(my_net_diet_raw['Date & Time']).dt.to_period('w').astype(str).str.split('/').str[0]
假设 y_net_diet_raw['Date & Time'].dt
是一个 DatetimeProperties
对象 ,您应该能够使用 y_net_diet_raw['Date & Time'].dt.date
访问日期(您不需要不需要 y_net_diet_raw['Date & Time'].dt.week
)。在 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.dt.html and https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.dt.date.html.
阅读更多内容
如果以上不能满足您的需求,那么,您可能想试试这个:
正在将 DatetimeProperties.dt.week
转换为 DatetimeProperties.dt.date
:
如果您想获得特定周数的第一天,您可以这样做(假设 y_net_diet_raw['Date & Time'].dt.week
是整数的 Series
(如您的问题)):
datetimes_of_first_day_of_each_week = my_net_diet_raw['Date & Time'].dt.week.apply(lambda week: datetime.strptime(f'2020 {week - 1} 1', '%Y %W %w'))
Series.apply()
允许您指定一个函数来计算和 return 原始系列中每个给定值的值以构造新的 Series
。在这里,它正在创建一个新的 datetime
对象(针对每个周数),其中日期是一周的第一天(在本例中为星期一),最后 return 对每个对象创建一个新 Series
.
这对我有用。这是您要找的吗?
df['DATE']+pd.to_timedelta(6-df['DATE'].dt.weekday, unit="d")
如何将 dt.week(returns 周数)转换为显示周日期?我当前的代码:
my_net_diet_raw['Date & Time'].dt.week
Returns:
1 22
2 22
3 22
4 22
..
176 30
177 30
178 30
179 30
180 30
Name: Date & Time, Length: 181, dtype: int64
我希望 22 显示为 05-25-2020,23 显示为 06-01-2020,依此类推
数据:
0 19732166 2020-05-31 Breakfast
1 4016406 2020-05-31 Breakfast
2 1132 2020-05-31 Breakfast
3 19732166 2020-05-31 Lunch
4 1009 2020-05-31 Lunch
.. ... ... ...
176 5749 2020-07-23 Lunch
177 20037 2020-07-23 Lunch
178 4159294 2020-07-23 Lunch
179 20402843 2020-07-23 Snack
180 23053329 2020-07-23 Snack
检查
pd.to_datetime(my_net_diet_raw['Date & Time']).dt.to_period('w').astype(str).str.split('/').str[0]
假设 y_net_diet_raw['Date & Time'].dt
是一个 DatetimeProperties
对象 ,您应该能够使用 y_net_diet_raw['Date & Time'].dt.date
访问日期(您不需要不需要 y_net_diet_raw['Date & Time'].dt.week
)。在 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.dt.html and https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.dt.date.html.
如果以上不能满足您的需求,那么,您可能想试试这个:
正在将 DatetimeProperties.dt.week
转换为 DatetimeProperties.dt.date
:
如果您想获得特定周数的第一天,您可以这样做(假设 y_net_diet_raw['Date & Time'].dt.week
是整数的 Series
(如您的问题)):
datetimes_of_first_day_of_each_week = my_net_diet_raw['Date & Time'].dt.week.apply(lambda week: datetime.strptime(f'2020 {week - 1} 1', '%Y %W %w'))
Series.apply()
允许您指定一个函数来计算和 return 原始系列中每个给定值的值以构造新的 Series
。在这里,它正在创建一个新的 datetime
对象(针对每个周数),其中日期是一周的第一天(在本例中为星期一),最后 return 对每个对象创建一个新 Series
.
这对我有用。这是您要找的吗?
df['DATE']+pd.to_timedelta(6-df['DATE'].dt.weekday, unit="d")