如果原来的date是2023/11/04 21:00,
nowcoder['date']=pd.to_datetime(nowcoder['date']).dt.date
nowcoder['date']=pd.to_datetime(nowcoder['date'],format = '%Y-%m-%d')
这两行代码运行后分别会得到什么结果?
第一行代码 nowcoder['date']=pd.to_datetime(nowcoder['date']).dt.date
会将nowcoder['date']
列中的每个元素转换为日期时间格式,然后使用.dt.date
取出日期部分。所以,如果原来的date是"2023/11/04 21:00",那么运行这行代码后,nowcoder['date']
列中对应的元素会变为日期对象"2023-11-04"。
.dt
属性不仅可以用来取出日期部分,还可以用来取出其他的时间相关的信息。以下是一些常用的选项:
.dt.year
:返回年份.dt.month
:返回月份.dt.day
:返回日期(月份中的哪一天).dt.hour
:返回小时.dt.minute
:返回分钟.dt.second
:返回秒.dt.weekday
:返回星期几(0代表星期一,6代表星期日).dt.quarter
:返回季度
这些属性都可以用来从日期时间对象中提取特定的信息。
第二行代码 nowcoder['date']=pd.to_datetime(nowcoder['date'],format = '%Y-%m-%d')
会将nowcoder['date']
列中的每个元素按照’%Y-%m-%d’的格式转换为日期时间格式。所以,如果原来的date是"2023/11/04 21:00",那么运行这行代码后,由于原始数据与指定的格式不匹配,可能会导致错误。如果原始数据是"2023-11-04"这样的格式,那么运行这行代码后,nowcoder['date']
列中对应的元素会变为日期时间对象"2023-11-04 00:00:00"。请注意,这里的时间部分默认为00:00:00。
format = '%Y-%m-%d'
确实是用来指定日期的格式,也就是说它会把日期时间对象转换为指定的格式。但是,这并不意味着它会丢弃原始日期时间对象中的其他信息。
当你使用pd.to_datetime
函数并指定format = '%Y-%m-%d'
时,如果原始数据中包含了时间信息(例如"2023-11-04 21:00"),那么在转换过程中,时间信息会被保留下来,只不过在输出时不会显示出来。也就是说,转换后的日期时间对象实际上是"2023-11-04 21:00:00",只是当你打印或查看它时,由于你指定了格式为’%Y-%m-%d’,所以只会显示出"2023-11-04"。
而当你使用.dt.date
属性时,它会真正地丢弃掉时间信息,只保留日期部分。也就是说,如果原始数据是"2023-11-04 21:00",那么使用.dt.date
属性后,得到的将会是一个只包含日期信息的对象"2023-11-04"。