19

我无法弄清楚如何正确写入/读取系列...以下(以及它的许多变体)导致读取系列与书面系列不同...请注意,该系列被读入 DataFrame 而不是比一个系列。

In [55]: s = pd.Series({'a': 1, 'b': 2})

In [56]: s
Out[56]: 
a    1
b    2

In [57]: s.to_csv('/tmp/s.csv')

In [58]: !cat /tmp/s.csv
a,1
b,2

In [59]: pd.read_csv('/tmp/s.csv')
Out[59]: 
   a  1
0  b  2
4

3 回答 3

28
In [3]: s.to_csv('/home/wesm/tmp/sfoo.csv')

In [4]: Series.from_csv('/home/wesm/tmp/sfoo.csv')
Out[4]: 
a    1
b    2

您也可以传递header=None, index_col=0, squeeze=Trueread_csv类似于 Rutger Kassies 建议的内容。

于 2012-11-26T15:24:59.773 回答
5

CSV 不包含有关您的熊猫系列结构的任何信息。指定一些额外的参数可能会有所帮助。通过以下方式可以正常恢复数据:

pd.read_csv('s.csv', index_col=0, header=None)

但这会为其添加默认列和索引名称。如果您只想保存您的 Series/DF 以供以后使用,最好使用 .save() 和 pd.load() 方法。

于 2012-11-26T08:02:47.407 回答
2

将 pandas 对象保存到文件中,然后从文件中重新创建该对象,您可以使用:

s.to_pickle('filename')

s = pd.read_pickle('filename')

方法。

以下是详细信息:https ://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_pickle.html

于 2019-06-12T15:13:39.450 回答