尝试更改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
请注意产生的 dtype:
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]
使用这个 Series 作为 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
Series 有一个 object dtype,并且您保持不变的
object_encoding='infer'
参数为
fastparquet.write
. 所以,从
文档:
“特殊值‘infer’将导致从前十个非空值中猜测类型。”
Fastparquet 不会尝试从它期望的日期值中推断出日期值bytes|utf8|json|bson|bool|int|float
。