我有一个数据帧,大约有10000行和130列,其中5列是日期列。我想将所有5个日期列转换为日期,这意味着所有日期都在"日期"中;yyyy-mm-dd";格式,如果某些内容无法转换,则将其保留为NaT.
当我尝试将pd.to_datetime与";errors=强制;我收到以下错误:
ValueError:条件需要布尔数组,而不是对象
这些列可以有任何内容:空格、数字、字符串、特殊字符等
谢谢你的帮助!
也许这对您的情况有帮助:
import pandas as pd
import numpy as np
df = pd.DataFrame(
{
'col1': [np.nan, '2022-08-21', 'not a date', True, '', 999],
'col2': [-1, pd.NA, '2000-12-31', '2345-67-89', False, pd.Timestamp.today()]
}
)
date_cols = ['col1', 'col2']
for col in date_cols:
df[col] = pd.to_datetime([str(x) for x in df[col]], errors='coerce')
print(df)
print(df.info())
输出1:
col1 col2
0 NaT NaT
1 2022-08-21 NaT
2 NaT 2000-12-31 00:00:00.000000
3 NaT NaT
4 NaT NaT
5 NaT 2022-08-21 16:38:16.790773
输出2:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6 entries, 0 to 5
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 col1 1 non-null datetime64[ns]
1 col2 1 non-null datetime64[ns]
dtypes: datetime64[ns](2)
memory usage: 224.0 bytes
None