我正在Python Panda上进行两个csv文件的比较,但在具有5个日期列的csv文件中,我在read_csv方法中使用了parse_date=[出生日期'、最后更新日期'、加入日期'、注册日期'、结束日期'],但它只分析出生日期,而不是csv文件内的所有列。
代码:
csv_pandas=pd.read_csv("path of the csv file",parse_date=['dateofbirth','lastupdates','dateofjoin','dateofresign,'endoftrade'])
print(csv_pandas)
CSV文件:
dateofbirth lastupdates dateofjoin dateofresign
05/06/2021 00:00:00PM 12/13/2021 12:00:00PM 12/13/2021 12:00:00PM 12/13/2021 12:00:00PM
column non-null count Dtype
------ ------------- ------
dateofbirth non-null object
dateofbirth non-null datetime64[ns]
dateofbirth non-null datetime64[ns]
dateofbirth non-null datetime64[ns]
我只能转换对象Dtype列,剩余的datetime64[ns]不能解析
大约我有160个csv文件,每个csv文件都有不同的列名,任何一个plz都能建议吗
- 您有两种日期格式,需要不同的
strptime()
格式指令 - 并非所有要转换的列都存在于数据帧中,因此测试该列是否存在于dict理解中,该理解以**kwargs形式传递给
assign()
csv_pandas = csv_pandas.assign(
**{
c: pd.to_datetime(csv_pandas[c], format="%Y-%m-%d %H:%M:%S:%f", errors="ignore")
for c in parse_date
if c in csv_pandas.select_dtypes("object").columns
}
).pipe(
lambda d: d.assign(
**{
c: pd.to_datetime(d[c], format="%m/%d/%Y %H:%M:%S%p", errors="ignore")
for c in parse_date
if c in d.select_dtypes("object").columns
}
)
)
输出
csv_pandas.dtypes
dateofbirth datetime64[ns]
lastupdates datetime64[ns]
dateofjoin datetime64[ns]
dateofresign datetime64[ns]
dtype: object