使用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])