2012-11-26 10 views
8

Nie mogę wymyślić, jak poprawnie pisać/czytać serie ... Poniższe (i wiele ich odmian) powoduje, że seria czytająca jest inna niż seria napisana ... pamiętaj, że seria jest odczytywana DataFrame zamiast serii.Jak pisać/czytać pandy Series to/from csv?

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 

Odpowiedz

16
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 

Można także przekazać header=None, index_col=0, squeeze=True do read_csv podobny do tego, co sugeruje Rutger Kassies.

2

Plik CSV nie zawiera żadnych informacji o strukturze Twojej serii pand. Pomocne może być podanie dodatkowych argumentów. Odzyskiwanie danych w normalny sposób jest możliwe dzięki:

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

Dodaje to domyślne nazwy kolumn i indeksów. Jeśli chcesz tylko zapisać serię/DF na później, lepiej użyj metod .save() i pd.load().