首页 > 解决方案 > 如何将包含 bin 的 pandas 数据框写入文件,以便可以将其读回 pandas?

问题描述

我有以下格式的熊猫数据框:

    df = pd.DataFrame({'a' : [0,1,2,3,4,5,6], 'b' : [-0.5, 0.0, 1.0, 1.2, 1.4, 1.3, 1.1]})
    df['aBins'] = pd.cut(df['a'], bins = np.arange(0,10,2), include_lowest = True)

其中每个 bin 是一个区间:

    type(df['aBins'].iloc[0])

    pandas._libs.interval.Interval

该系列将它们存储为分类数据:

    df.info()

    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 7 entries, 0 to 6
    Data columns (total 3 columns):
    a        7 non-null int64
    b        7 non-null float64
    aBins    7 non-null category
    dtypes: category(1), float64(1), int64(1)
    memory usage: 263.0 bytes        

我正在尝试将此数据框保存为文件,以便可以轻松地将其读回数据框。我尝试使用 .to_csv() 将其保存为 .csv 文件,但是当我将其读回 pandas 时,'aBins' 会作为字符串读入。

    df.to_csv('test.csv', index = False)
    df_reread = pd.read_csv('test.csv')
    df_reread.info()

    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 7 entries, 0 to 6
    Data columns (total 3 columns):
    a        7 non-null int64
    b        7 non-null float64
    aBins    7 non-null object
    dtypes: float64(1), int64(1), object(1)
    memory usage: 248.0+ bytes

有没有一种很好的方法来保存和重新读取这个数据帧,以便可以在相同的状态下读回熊猫?

标签: pandascsvdataframeimportbins

解决方案


您可能想查看pandas.DataFrame.to_picklepandas.read_pickle

>>> df.to_pickle("./test.pkl")
...
...
>>> df = pd.read_pickle("./test.pkl")
>>> type(df['aBins'].iloc[0]) 
pandas._libs.interval.Interval

推荐阅读