【问题标题】:Parse Timestamp tuple into date while reading csv file with Pandas使用 Pandas 读取 csv 文件时将时间戳元组解析为日期
【发布时间】:2021-06-14 04:41:07
【问题描述】:

我有许多 CSV 文件需要解析为 Pandas 数据帧,以时间为索引。我自动解析文件usingdf = pd.read_csv("infile.csv",parse_dates=["index"],dayfirst=False)中的日期。对于我的一些文件,这会失败,因为找不到正确的日期格式,而是一个看起来像这样的时间戳元组:

    ,index,tos,model_member,member_id,model,experiment_id
0,"(0, Timestamp('1950-01-31 00:00:00'), 0)",4.740208145290402,KACE-1-0-G-r1i1p1f1_ssp245,r1i1p1f1_ssp245,KACE-1-0-G,ssp245
1,"(0, Timestamp('1950-01-31 00:00:00'), 1)",4.740208145290402,KACE-1-0-G-r1i1p1f1_ssp245,r1i1p1f1_ssp245,KACE-1-0-G,ssp245
2,"(0, Timestamp('1950-01-31 00:00:00'), 2)",4.740208145290402,KACE-1-0-G-r1i1p1f1_ssp245,r1i1p1f1_ssp245,KACE-1-0-G,ssp245
3,"(0, Timestamp('1950-01-31 00:00:00'), 3)",4.740208145290402,KACE-1-0-G-r1i1p1f1_ssp245,r1i1p1f1_ssp245,KACE-1-0-G,ssp245

在读取文件期间,我一直在寻找一种将其转换为日期的好方法,但我找不到。任何的意见都将会有帮助。时间戳来自从 NetCDF 文件中提取数据,然后使用 Python 库 xarray 和函数 [xarray.Dataset.to_netcdf][2] 将数据写入 CSV。如果有一种方法可以避免首先将 Timestamp 写入文件,而是使用字符串日期,我也会非常感兴趣。 %Y-%m-%h。我看到了与我很接近的问题,但their solutions 对我不起作用。我目前将数据写入文件的方式是,我认为这可行:

 df.to_csv("filename.csv", date_format='%Y-%m-%d')

【问题讨论】:

    标签: python pandas csv python-xarray


    【解决方案1】:

    您可以在不进行任何自动日期解析的情况下读取 csv,然后通过捕获 r"'(.*)'" 手动读取日期 extract

    df = pd.read_csv('infile.csv', index_col=0)
    df['index'] = df['index'].str.extract(r"'(.*)'")
    df['index'] = pd.to_datetime(df['index'])
    
    index tos model_member member_id model experiment_id
    0 1950-01-31 4.740208 KACE-1-0-G-r1i1p1f1_ssp245 r1i1p1f1_ssp245 KACE-1-0-G ssp245
    1 1950-01-31 4.740208 KACE-1-0-G-r1i1p1f1_ssp245 r1i1p1f1_ssp245 KACE-1-0-G ssp245
    2 1950-01-31 4.740208 KACE-1-0-G-r1i1p1f1_ssp245 r1i1p1f1_ssp245 KACE-1-0-G ssp245
    3 1950-01-31 4.740208 KACE-1-0-G-r1i1p1f1_ssp245 r1i1p1f1_ssp245 KACE-1-0-G ssp245

    【讨论】:

    • 太棒了!您的解决方案就像一个魅力。我以后一定会更多地使用extract方法。
    猜你喜欢
    • 2016-12-15
    • 2017-02-18
    • 2018-06-20
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多