更改多个日期列的日期格式的功能

我有一个包含多种日期格式的大型数据框,我想清理此数据集,但我确实想知道是否可以找到此日期列并更改其格式,而无需一次覆盖一列。


这就是我提取所有以前缀日期开头的列的方式


date_df = df.loc[:,df.columns.str.startswith("date")] 


然后从这里我写了一个函数来将日期格式从字符串更改为日期时间 YMD。


from datetime import datetime

def date_fomated():

dates = df.loc[:,date_df.columns.datetime.strftime('%m/%d/%Y')]

return dates

这没有用..我的预期结果是创建一个函数,该函数使用前缀“date”将这些多个日期列中的格式日期设置为 YMD 来对日期列进行子集化。


这是一个要使用的小数据集


import pandas as pd

data = [['2020-06-24','2020-01-24'],['2020-05-04','2020-06-24'],['2018-11-24','2018-11-24'],['2018-11-24','2018-11-24']]

df = pd.DataFrame(data,columns=['date_today','date_adm'],dtype=float)

print (df)

请协助


BIG阳
浏览 102回答 2
2回答

森林海

请使用df.filter(like='date', axis=1)(包含“日期”)或df.filter(regex='^date', axis=1)(starts with date) and apply pd.to_datetime to thedf进行过滤原始 df dtypes df.filter(like='date', axis=1).dtypes#filter columns that contain date and check their dtypes        df.dtypes    date_today    object    date_adm      object    dtype: object解决方案df.filter(like='date', axis=1).apply(lambda x: pd.to_datetime(x))新数据类型df.filter(like='date', axis=1).apply(lambda x: pd.to_datetime(x)).dtypesdf.dtypesdate_today    datetime64[ns]date_adm      datetime64[ns]dtype: object

江户川乱折腾

让我们使用stack和filterdf = pd.DataFrame({'date1' : ['20200105','20210305'],                  'date2' : [20200103, 20210309],                  'id' : [0,1] })      date1     date2  id0  20200105  20200103   01  20210305  20210309   1df.loc[:,df.filter(like='date').columns] = df.filter(like='date')\                                                .stack()\                                                .apply(pd.to_datetime,                                                       format='%Y%m%d')\                                                .unstack()print(df)       date1      date2  id0 2020-01-05 2020-01-03   01 2021-03-05 2021-03-09   1print(df.dtypes)date1    datetime64[ns]date2    datetime64[ns]id                int64dtype: object
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python