将数据帧中的多列转换为日期生成错误(条件需要布尔数组,而不是对象)



我有一个数据帧,大约有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

最新更新