原始代码,如下所示: df['day_of_week'] = df.date.weekday() 这样写报错:Series' object has no attribute 'weekday' 二、实现过程 这里【Python进阶者】给了一个代码,如下所示: df["week_num2"] = df["date"].dt.weekday 确实好使!
import datetime dayOfWeek = datetime.now().isoweekday() ###返回数字1-7代表周一到周日 day_Week = datetime.now().weekday
一、问题 AttributeError: ‘DatetimeProperties’ object has no attribute ‘weekday_name’ 简单测试,运行如下代码: import pd # 创建日期 dates = pd.Series(pd.date_range("7/26/2021", periods=3, freq="D")) # 查看星期几 print(dates.dt.weekday_name ) # 只显示数值 print(dates.dt.weekday) 二、解决方法 weekday_name改为day_name() import pandas as pd # 创建日期 dates pd.date_range("7/26/2021", periods=3, freq="D")) # 查看星期几 print(dates.dt.day_name()) # 只显示数值 print(dates.dt.weekday
[1240] WEEKDAY函数与WEEKNUM函数 WEEKDAY语法: 语法= WEEKDAY(<日期>, <返回类型>) WEEKNUM语法: 语法= WEEKNUM(<日期>, <返回类型>) WEEKDAY函数与WEEKNUM函数属于常见“值函数”,一般情况下作为生成日期表的组成部分,前者代表“周几”,也就是咱经常说的礼拜几;后者代表该年份的“第几周”。 WEEKDAY类型:选项有1、2、3。 1代表周日是本周的第一天,周六为最后一天; 2代表周一是本周的第一天,周日为最后一天; 3代表周一是本周的第一天,周日为最后一天。 WEEKDAY例子: WEEKDAY类型1 = WEEKDAY ( '示例'[时间], 1 ) 结果: [1240] WEEKDAY类型2 = WEEKDAY ( '示例'[时间], 2 ) 结果: [ 1240] WEEKDAY类型3 = WEEKDAY ( '示例'[时间], 3 ) 结果: [1240] WEEKNUM例子: WEEKNUM类型1 = WEEKNUM ( '示例'[时间], 1 )
pd # 创建日期 dates = pd.Series(pd.date_range("2/2/2002", periods=3, freq="M")) # 查看星期几 print(dates.dt.weekday_name ) # 只显示数值 print(dates.dt.weekday) 报错: AttributeError: ‘DatetimeProperties’ object has no attribute ‘weekday_name ’ 解决方法: weekday_name改为day_name() 最终代码: import pandas as pd # 创建日期 dates = pd.Series(pd.date_range("2 /2/2002", periods=3, freq="M")) # 查看星期几 print(dates.dt.day_name()) # 只显示数值 print(dates.dt.weekday)
res0: String = Monday scala> Weekday.withName("Monday") res1: Weekday.Value = Monday scala> Weekday.withName 列出所有可能的值: scala> Weekday.values res0: Weekday.ValueSet = Weekday.ValueSet(Monday, Tuesday, Wednesday, Wednesday extends Weekday case object Thursday extends Weekday case object Friday extends Weekday case object Saturday extends Weekday case object Sunday extends Weekday def test(weekday: Weekday) = { extends Weekday } def test(weekday: Weekday) = { weekday match { case Weekday.Monday => println
使用: >>> day1 = Weekday.Mon >>> print(day1) Weekday.Mon >>> print(Weekday.Tue) Weekday.Tue >>> print(Weekday ['Tue']) Weekday.Tue >>> print(Weekday.Tue.value) 2 >>> print(day1 == Weekday.Mon) True >>> print(day1 == Weekday.Tue) False >>> print(Weekday(1)) Weekday.Mon >>> print(day1 == Weekday(1)) True >>> Weekday Sun => Weekday.Sun Mon => Weekday.Mon Tue => Weekday.Tue Wed => Weekday.Wed Thu => Weekday.Thu Fri => Weekday.Fri Sat => Weekday.Sat
下面列出了一周中周几的列表: type Weekday int ①const ( Monday Weekday = 0 ② Tuesday Weekday = 1 Wednesday Weekday = 2 Thursday Weekday = 3 Friday Weekday = 4 Saturday Weekday = 5 Sunday Weekday = 6) ① 定义一个自定义的Weekday类型 ② 创建一个Weekday类型的Modany常量 创建一个Weekday类型的好处是可以强制让编译器在编译时做类型检查以及提高可读性。 Weekday。 下面是用iota的Weekday版本: type Weekday int const ( Monday Weekday = iota ① Tuesday Wednesday Thursday
访问这些枚举类型可以有若干种方法: >>> day1 = Weekday.Mon >>> print(day1) Weekday.Mon >>> print(Weekday.Tue) Weekday.Tue >>> print(Weekday['Tue']) Weekday.Tue >>> print(Weekday.Tue.value) 2 >>> print(day1 == Weekday.Mon) True >>> print(day1 == Weekday.Tue) False >>> print(Weekday(1)) Weekday.Mon >>> print(day1 == Weekday Sun => Weekday.Sun Mon => Weekday.Mon Tue => Weekday.Tue Wed => Weekday.Wed Thu => Weekday.Thu Fri => Weekday.Fri Sat => Weekday.Sat 可见,既可以用成员名称引用枚举常量,又可以直接根据value的值获得枚举常量。
) #输出:Weekday.Tue print(Weekday['Tue']) #输出:Weekday.Tue,可用成员名称引用枚举常量 print(Weekday['Tue'].value print(Weekday('03')) #输出:Weekday.Wed,根据value值获取枚举常量 print(Weekday('03').value) #输出:03,根据 , member in Weekday. #输出:Tue => Weekday.Tue #输出:Wed => Weekday.Wed #输出:Thu => Weekday.Thu #输出:Fri => Weekday.Fri #输出:Sat => Weekday.Sat
= ""; switch(day){ case 1: weekday = "星期一"; break; case 2: weekday weekday = "星期六"; break; case 7: weekday = "星期日"; break; default: ({ weekday:weekday }) }, }) 前台 <view>{{weekday}}view> 运行结果 重头戏来了,wxs 语法实现 后台 保留 data 信息 weekday = "星期六"; break; case 7: weekday = "星期日"; break; default: weekday = "错误的日期"; break; } return weekday; } module.exports.getWeekDay =
为了解决数据类型不安全的问题,可以在WeekDay中引入私有构造器,防止WeekDay被除自身以外的其他对象实例化,然后可以将WeekDay作为休息日的数据类型,很好的解决了数据类型不安全的问题,同时, WeekDay MONDAY = new WeekDay(); public static final WeekDay TUESDAY = new WeekDay(); public static final WeekDay WEDNESDAY = new WeekDay(); public static final WeekDay THURSDAY = new WeekDay (); public static final WeekDay FRIDAY = new WeekDay(); public static final WeekDay SATURDAY = new WeekDay(); public static final WeekDay SUNDAY = new WeekDay(); } 运行案例: public static void main
>>> print(day1) Weekday.Mon >>> print(Weekday.Tue) Weekday.Tue >>> print(Weekday['Tue'].name) Tue >> > print(Weekday.Tue.value) 2 >>> print(day1 == Weekday.Mon) True >>> print(day1 == Weekday.Tue) False >>> print(Weekday(1)) Weekday.Mon >>> print(day1 == Weekday(1)) True >>> Weekday(7) Traceback (most Sun => Weekday.Sun Mon => Weekday.Mon Tue => Weekday.Tue Wed => Weekday.Wed Thu => Weekday.Thu Fri => Weekday.Fri Sat => Weekday.Sat
for 循环是为了显示当前的日期信息 for i in range(7): # 判断当前日期对应的数字 if weekday.weekday() == i: \n') # 判断周一到周日的日期 for i in range(7): while weekday.weekday() ! weekday += one_day day_number = datetime.date.isoweekday(weekday) # 如果在周一 -到周日之后(包括周一,周日)那就一天一天减 elif weekday.weekday() > i: weekday -= one_day day_number = datetime.date.isoweekday(weekday) print(f'{weekday} is {weekDict[str(i)][:3]} It
) # 枚举成员名称 print(WeekDay.Mon.name) # 枚举成员值 print(WeekDay.Mon.value) 枚举的迭代也很简单,如下所示: # 方式 1 for day in # 方式 2 print(list(WeekDay)) 2.3 比较 枚举成员及属性可以使用 is 进行对象比较,还可以使用 == 进行值比较,看下示例: print(WeekDay.Mon is WeekDay.Thu) print(WeekDay.Mon == WeekDay.Mon) print(WeekDay.Mon.name == WeekDay.Mon.name) print(WeekDay.Mon.value == WeekDay.Mon.value) 枚举成员不能进行大小比较,如下所示: >>> WeekDay.Mon < WeekDay.Thu TypeError: '<' not supported between instances of 'WeekDay' and 'WeekDay' 2.4 确保枚举值唯一 我们定义枚举时,成员名称是不可以重复的,但成员值是可以重复的,如果想要保证成员值不可重复
一番深思熟虑后,你改成了这样: public class Weekday { private Weekday(){} public final static Weekday SUN = new Weekday (); public final static Weekday MON = new Weekday(); public final static Weekday TUE = new Weekday(); public final static Weekday WED = new Weekday(); public final static Weekday THU = new Weekday(); public final static Weekday FRI = new Weekday(); public final static Weekday SAT = new Weekday(); public static (Weekday.SUM) ===> " + Weekday.MON.compareTo(Weekday.SUN)); //Weekday.MON.compareTo(Weekday.FRI) ===>
如果需要更精确地控制枚举类型,可以从Enum派生出自定义类 from enum import Enum, unique @unique class Weekday(Enum): Sun = 0 访问这些枚举类型可以有若干种方法: day1 = Weekday.Mon print(day1) Weekday.Mon print(Weekday.Tue) Weekday.Tue print(Weekday ['Tue']) Weekday.Tue print(Weekday.Tue.value) 2 print(Weekday(1)) Weekday.Mon for name, member in Weekday __members__.items(): print(name, '=>', member) Sun => Weekday.Sun Mon => Weekday.Mon Tue => Weekday.Tue Wed => Weekday.Wed Thu => Weekday.Thu Fri => Weekday.Fri Sat => Weekday.Sat 可见,既可以用成员名称引用枚举常量,又可以直接根据
WeekDay = 1 Tuesday WeekDay = 2 Wednesday WeekDay = 3 Thursday WeekDay = 4 Friday WeekDay = 5 Saturday WeekDay = 6 Monday WeekDay = 7 ) 在改进后的例子中,我们定义了一个自定义类型 Weekday,用于表示星期几 例如,使用 iota 定义一个星期几的枚举类型: type WeekDay int const ( Sunday WeekDay = iota Tuesday Wednesday 为自定义的枚举添加方法 type WeekDay int const ( Sunday WeekDay = iota Tuesday Wednesday Thursday // Values 返回一个包含所有枚举值的切片 func Values() []WeekDay { return []WeekDay{Monday, Tuesday, Wednesday, Thursday
= new Weekday(); public final static Weekday MON = new Weekday(); public final static Weekday TUE = new Weekday(); public final static Weekday WED = new Weekday(); public final static Weekday THU = new Weekday(); public final static Weekday FRI = new Weekday(); public final static Weekday nowday = Weekday.SUN; Weekday.printNowDay(nowday); Weekday nextDay = Weekday.getNextDay (Weekday.SUM) ===> " + Weekday.MON.compareTo(Weekday.SUN)); //Weekday.MON.compareTo(Weekday.FRI
=96, winter }; typedef enum { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }Weekday to summer\n"); // x is equal to summer printf("%d bytes\n", sizeof(spring)); // 4 bytes /* Weekday */ printf("sizeof Weekday is: %d \n", sizeof(Weekday)); //sizeof Weekday is: 4 Weekday today = Saturday; Weekday tomorrow; if(today == Monday) tomorrow = Tuesday; else tomorrow = (Weekday) (today + 1); //remember to convert from int to Weekday return 0