pandas: preserve dtypes saved to feather 格式

pandas: preserve dtypes saved to feather format

我的理解是 feather 格式的优点是它保留了类型。所以我希望变量 stateobject dtype 会被保留,但事实并非如此。为什么?有解决办法吗?

import sys
import pandas
from pandas import Timestamp
print(pandas.__version__)
## 1.3.4
print(sys.version)
## 3.9.7 (default, Sep 16 2021, 08:50:36) 
## [Clang 10.0.0 ]


d = pandas.DataFrame({'Date': {0: Timestamp('2020-12-01 00:00:00'), 1: Timestamp('2020-11-01 00:00:00'), 2: Timestamp('2020-10-01 00:00:00'), 3: Timestamp('2020-09-01 00:00:00'), 4: Timestamp('2020-08-01 00:00:00')}, 'state': {0: 1, 1: 1, 2: 1, 3: 1, 4: 1}, 'value': {0: 3.1, 1: 3.4, 2: 3.9, 3: 5.9, 4: 6.4}})

d.dtypes
# Date     datetime64[ns]
# state             int64
# value           float64
# dtype: object

d["state"] = d["state"].astype(object)

d.dtypes
# Date     datetime64[ns]
# state            object
# value           float64
# dtype: object

d.to_feather("test.feather")

d = pandas.read_feather("test.feather")
d.dtypes
# Date     datetime64[ns]
# state             int64
# value           float64
# dtype: object

我希望 state 是“字符串”或“对象”,而不是“int64”。我不想每次加载数据框时都必须重新转换。谢谢!

不久前,Quang Hoang 在评论中建议以下方法有效:

d["state"] = d["state"].astype(str)

我无法提供任何解释。我很乐意 select 任何其他更好的答案。