如何将pandas Series写入/从csv读取?

nr9pn0ug  于 2023-06-28  发布在  其他
关注(0)|答案(4)|浏览(110)

我不知道如何正确地写/读一个系列...以下(以及它的许多变体)导致读的系列不同于写的系列...请注意,该系列被读入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
0s0u357o

0s0u357o1#

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

您也可以像Rutger Kassies建议的那样将header=None, index_col=0, squeeze=True传递到read_csv

wyyhbhjk

wyyhbhjk2#

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

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

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

sr4lhrrt

sr4lhrrt3#

将pandas对象保存到文件,然后从文件重新创建该对象,您将用途:
s.to_pickle('filename')

s = pd.read_pickle('filename')
方法中的操作。
以下是详细信息:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_pickle.html

dzjeubhm

dzjeubhm4#

.squeeze()应用于pd.read_csv返回的DataFrame:

>>> s = pd.Series(pd.Series({'a': 1, 'b': 2}))
>>> s.to_csv('s.csv')
>>> pd.read_csv('s.csv', index_col = 0).squeeze()
a    1
b    2
Name: 0, dtype: int64

(Thepd.Series.read_csv接受的解决方案现在已经贬值。)

相关问题