Joh*_*ews 3 python datetime dataframe python-3.x pandas
我有以下pandas DataFrame
专栏dfA['TradeDate']
:
0 20100329.0
1 20100328.0
2 20100329.0
...
Run Code Online (Sandbox Code Playgroud)
我希望将它转换为日期时间.
基于SO上的另一个步骤,我首先将其转换为字符串,然后应用该strptime
函数.
dfA['TradeDate'] = datetime.datetime.strptime( dfA['TradeDate'].astype('int').to_string() ,'%Y%m%d')
Run Code Online (Sandbox Code Playgroud)
但是,这会返回我的格式不正确的错误(ValueError
).
我发现的一个问题是列不是正确的字符串,而是对象.
当我尝试:
dfA['TradeDate'] = datetime.datetime.strptime( dfA['TradeDate'].astype(int).astype(str),'%Y%m%d')
Run Code Online (Sandbox Code Playgroud)
它返回:必须是Str而不是Series.
您可以使用:
df['TradeDate'] = pd.to_datetime(df['TradeDate'], format='%Y%m%d.0')
print (df)
TradeDate
0 2010-03-29
1 2010-03-28
2 2010-03-29
Run Code Online (Sandbox Code Playgroud)
但如果有一些不好的值,请添加errors='coerce'
以替换它们NaT
print (df)
TradeDate
0 20100329.0
1 20100328.0
2 20100329.0
3 20153030.0
4 yyy
df['TradeDate'] = pd.to_datetime(df['TradeDate'], format='%Y%m%d.0', errors='coerce')
print (df)
TradeDate
0 2010-03-29
1 2010-03-28
2 2010-03-29
3 NaT
4 NaT
Run Code Online (Sandbox Code Playgroud)