【问题标题】:date can not be serialized日期不能序列化
【发布时间】:2018-03-14 18:57:12
【问题描述】:

我在尝试将数据框保存为文件时遇到错误。

from fastparquet import write 
write('profile_dtl.parq', df)

错误与“日期”有关,错误消息如下所示...

ValueError: Can't infer object conversion type: 0    1990-01-01
1    1954-01-01
2    1981-11-15
3    1993-01-21
4    1948-01-01
5    1977-01-01
6    1968-04-28
7    1969-01-01
8    1989-01-01
9    1985-01-01
Name: dob, dtype: object

我已经检查了该列是“对象”,就像任何其他可以毫无问题地序列化的列一样。如果我从数据框中删除“dob”列,则此行将起作用。如果有日期+时间,这也将起作用。

fast-parquet 不接受仅日期?

【问题讨论】:

    标签: pandas parquet fastparquet


    【解决方案1】:

    尝试将dob 更改为datetime64 dtype:

    import pandas as pd
    dob = pd.Series(['1954-01-01', '1981-11-15', '1993-01-21', '1948-01-01',
                     '1977-01-01', '1968-04-28', '1969-01-01', '1989-01-01',
                     '1985-01-01'], name='dob')
    Out:
    0    1954-01-01
    1    1981-11-15
    2    1993-01-21
    3    1948-01-01
    4    1977-01-01
    5    1968-04-28
    6    1969-01-01
    7    1989-01-01
    8    1985-01-01
    Name: dob, dtype: object
    

    注意产生的数据类型:

    pd.to_datetime(dob)
    
    Out:
    0   1954-01-01
    1   1981-11-15
    2   1993-01-21
    3   1948-01-01
    4   1977-01-01
    5   1968-04-28
    6   1969-01-01
    7   1989-01-01
    8   1985-01-01
    dtype: datetime64[ns]
    

    将此系列用作 DataFrame 中的索引:

    baz = list(range(9))
    foo = pd.DataFrame(baz, index=pd.to_datetime(dob), columns=['dob'])
    

    您现在应该可以保存 Parquet 文件了。

    from fastparquet import write
    
    write('foo.parquet', foo)
    

    $ls -l foo.parquet
    -rw-r--r--  1 moi  admin  854 Oct 13 16:44 foo.parquet
    


    您的 dob 系列有一个对象 dtype,您将 object_encoding='infer' 参数保持不变fastparquet.write。所以,来自docs

    “特殊值‘infer’会导致从前十个非空值中猜测类型。”

    Fastparquet 没有 try to infer 一个日期值,它预期是 bytes|utf8|json|bson|bool|int|float 之一。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-06
      • 2011-04-03
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 2019-04-03
      相关资源
      最近更新 更多