python为csv文件中的多个列解析U日期

2024-04-27 16:57:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python pandas进行两个csv文件的比较,但在有5个日期列的csv文件中,我在read_csv方法中使用了parse_date=['dateofbirth'、'lastupdates'、'dateofjoin'、'DateOfReign、'endoftrade'],但它只是解析了dateofbirth,而不是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]

我只能转换对象数据类型列,剩余的datetime64[ns]无法解析

我大约有160个csv文件,每个csv文件都有不同的列名,任何一个plz建议吗


Tags: 文件csvpandasreaddateparsenullns
1条回答
网友
1楼 · 发布于 2024-04-27 16:57:52
  • 有两种日期格式需要不同的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
        }
    )
)

output

csv_pandas.dtypes
dateofbirth     datetime64[ns]
lastupdates     datetime64[ns]
dateofjoin      datetime64[ns]
dateofresign    datetime64[ns]
dtype: object

相关问题 更多 >