首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >csv文件中多列的python pandas parse_dates

csv文件中多列的python pandas parse_dates
EN

Stack Overflow用户
提问于 2021-07-14 16:59:34
回答 1查看 109关注 0票数 1

我正在Python pandas上进行两个csv文件的比较,但是在有5个日期列的csv文件中,我已经在read_csv方法中使用了parse_ date =' dateofbirth ','lastupdates','dateofjoin','dateofresign,'endoftrade‘,但它只解析出生日期,而不是csv文件中的所有列。

代码:

代码语言:javascript
复制
csv_pandas=pd.read_csv("path of the csv file",parse_date=['dateofbirth','lastupdates','dateofjoin','dateofresign,'endoftrade'])
print(csv_pandas)

CSV文件:

代码语言:javascript
复制
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]

我只能转换对象数据类型列,其余的datetime64ns不能解析

我大约有160个csv文件,每个csv文件都有不同的列名,有没有人建议

EN

回答 1

Stack Overflow用户

发布于 2021-07-14 17:32:13

  • 您有两种日期格式,这两种格式需要不同strptime()格式您尝试转换的所有列都存在于数据框中,因此测试列是否存在于作为**kwargs传递给
    • dict convert中

代码语言:javascript
复制
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
        }
    )
)

输出

代码语言:javascript
复制
csv_pandas.dtypes
dateofbirth     datetime64[ns]
lastupdates     datetime64[ns]
dateofjoin      datetime64[ns]
dateofresign    datetime64[ns]
dtype: object
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68375032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档