【发布时间】:2021-10-06 11:09:28
【问题描述】:
从 Pandas 数据框 holiday_sales_4,我正在尝试使用 if/for 循环打印日期及其相应假日类型的输出(例如:25-Dec-2021 和 Christmas)。
当Weekly_Sales 的值为True 时,应该打印输出。
数据框holiday_sales_4如下:
Date Weekly_Sales
0 2010-02-12 True
1 2010-09-10 False
2 2010-11-26 True
3 2010-12-31 False
4 2011-02-11 True
5 2011-09-09 False
6 2011-11-25 True
7 2011-12-30 False
8 2012-02-10 True
9 2012-09-07 True
我正在尝试使用此代码:
for i in range(0, len(holiday_sales_4)):
comparison=holiday_sales_4.iloc[i]['Weekly_Sales']
if comparison == True:
date_of_true=holiday_sales_4.iloc[i]['Date'].strftime('%d-%b-%y')
if (date_of_true==datetime.datetime(2010, 2, 12) or
date_of_true==datetime.datetime(2011, 2, 11) or
date_of_true==datetime.datetime(2012, 2, 10) or
date_of_true==datetime.datetime(2013, 2, 18)):
return_holiday="Superbowl"
elif (date_of_true==datetime.datetime(2010, 9, 10) or
date_of_true==datetime.datetime(2011, 9, 11) or
date_of_true==datetime.datetime(2012, 9, 12) or
date_of_true==datetime.datetime(2013, 9, 13)):
return_holiday="Labour Day"
elif (date_of_true==datetime.datetime(2010, 11, 26) or
date_of_true==datetime.datetime(2011, 11, 25) or
date_of_true==datetime.datetime(2012, 11, 23) or
date_of_true==datetime.datetime(2013, 11, 29)):
return_holiday="Thanksgiving"
elif (date_of_true==datetime.datetime(2010, 12, 31) or
date_of_true==datetime.datetime(2011, 12, 30) or
date_of_true==datetime.datetime(2012, 12, 28) or
date_of_true==datetime.datetime(2013, 12, 27)):
return_holiday="Christmas"
print(date_of_true,'-', return_holiday)
输出似乎为date_of_true 正确地迭代了循环/if 条件,但不适用于return_holiday:
12-Feb-10 - 07-Sep-12
26-Nov-10 - 07-Sep-12
11-Feb-11 - 07-Sep-12
25-Nov-11 - 07-Sep-12
10-Feb-12 - 07-Sep-12
07-Sep-12 - 07-Sep-12
预期的输出是这样的:
12-Feb-10 - Superbowl
26-Nov-10 - Thanksgiving
11-Feb-11 - Superbowl
25-Nov-11 - Thanksgiving
10-Feb-12 - Superbowl
07-Sep-12 - Labour Day
我是编码新手,所以我确定解决方案很简单,但我找不到!
【问题讨论】:
-
您的预期输出?
-
我已经编辑了我的问题以增加清晰度。谢谢!
标签: python pandas dataframe for-loop if-statement