【问题标题】:dataframe type lost after saving保存后数据帧类型丢失
【发布时间】:2019-12-06 11:47:36
【问题描述】:

我有我更改为类别类型的数据框。但是在保存和加载后类型返回到 float64

data = pd.DataFrame(barray, columns=['line 1', 'line 2', 'line 3', 'line 4', 'piece to move', 'place to occupy'])
    data['possibility of win'] = y
    for col in ['line 1', 'line 2', 'line 3', 'line 4', 'piece to move', 'place to occupy']:
        data[col] = data[col].astype('category')

    data['line 1'].dtype

输出: CategoricalDtype(categories=['2000', '2001', '2002', '2010', '2011', '2012', '2020', '2021', '2100', '2101', '2102', '2110', '2112', '2120', '2121'、'2200'、'2201'、'2202'、'2210'、'2211'、'2212'、 '2220', '2221'], 有序=假)

data.to_csv('data.csv')
data = pd.read_csv("data.csv")
data['line 1'].dtype

输出: dtype('int64')

【问题讨论】:

    标签: python pandas numpy dataframe


    【解决方案1】:

    这是意料之中的,因为在 csv 中所有数据都像文本一样保存。

    解决方法是在read_csv中添加参数dtype

    #all columns set to categoricals
    data = pd.read_csv("data.csv", dtype='category')
    

    如果只想指定某些列使用字典:

    cols = ['line 1', 'line 2', 'line 3', 'line 4']
    d = dict.fromkeys(cols, 'category')
    data = pd.read_csv("data.csv", dtype=d)
    

    【讨论】:

    • 非常感谢。可以这样保存数据,也可以不保存
    • @Hacen Selahy 在 csv 中不是,但我猜在 pickle 中是的。试试df. to_pickle(file)pd. read_pickle(file)
    猜你喜欢
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    相关资源
    最近更新 更多