使用pandas在python中动态解析日期到datetime

使用pandas在python中动态解析日期到datetime,python,pandas,date,dataframe,Python,Pandas,Date,Dataframe,我有一个名为base\u varlist2的数据框,它有一些日期列,所有这些列都是不同格式的字符串。下面是第一列的快速快照: In [27]: print(base_varlist2.iloc[0]) completion_date_latest 07/10/2004 completion_date_original 17/05/1996 customer_birth_date_1 04/02/1963 custo

我有一个名为
base\u varlist2
的数据框,它有一些日期列,所有这些列都是不同格式的字符串。下面是第一列的快速快照:

In [27]: print(base_varlist2.iloc[0])
completion_date_latest               07/10/2004
completion_date_original             17/05/1996
customer_birth_date_1                04/02/1963
customer_birth_date_2                       NaN
d_start                               01Feb2018
latest_maturity_date                 01/03/2027
latest_valuation_date                08/05/2004
sdate                                       NaN
startdt_def                                 NaN
如您所见,这些列中有些是空的,有些不是空的

我需要一种将这些值动态更改为datetime值的方法,而不考虑它们现有的字符串格式。是否有一种方法可以从数据帧执行此操作,而不必为每列指定特定格式?例如,我并不总是知道
d_start
是否为
%d%b%Y
格式

数据框是由原始的CSV创建的,CSV要大得多,并且包含许多其他列(不是日期),如文本字段和数字字段。我正在使用
read\u csv
方法将其引入,如下所示:


source\u data=pd.read\u csv(loc+'TEST\u FILE.csv')
Pandas'
read\u csv
函数支持
parse\u dates
参数,该参数可以是要从str转换为datetime的列名列表

或者,您可以始终使用
pandas.to_datetime
将系列转换为,例如:

df['date'] = pandas.to_datetime(df['date'])

请注意,pandas不对日期使用的格式进行假设

不幸的是,这无法即时工作,需要为解析到日期指定每个列:


在我看来,原因在于性能,同时也避免将像
2000
这样的数值转换为
datetimes

如何以不区分大小写的方式进行转换?我有我的日期列列表,但它们的名称在CSV文件中的格式略有不同…@Aaraeus-我想没有,然后尝试第二种按位置搜索的解决方案。因此,我尝试通过循环我的列并创建一个新的数据框,将所有列转换为datetime,但是,当我试图查看结果数据集时,出现了一个错误。当我提交
print(mm\u dates\u base.iloc[0])
时,我得到了
ValueError:无法将float NaN转换为整数。这很奇怪,但可能与问题没有直接关系。你是对的。我会将此标记为完整,但我在这里提出了关于此问题的另一个问题:
source_data = pd.read_csv(loc + 'TEST_FILE.csv', parse_dates=['date1','date2','date6'])
#or specify columns by positions
source_data = pd.read_csv(loc + 'TEST_FILE.csv', parse_dates=[0,1,6])