web-dev-qa-db-fra.com

Convertir la liste Python en pandas Series

Quelle est la méthode pour convertir une liste de chaînes Python en un objet pd.Series?

(Les objets de la série pandas peuvent être convertis en liste en utilisant la méthode tolist() - mais comment faire la conversion inverse?)

19
Hypothetical Ninja

Je comprends que votre liste est en fait une liste de listes

import pandas as pd

thelist = [ ['sentence 1'], ['sentence 2'], ['sentence 3'] ]
df = pd.Series( (v[0] for v in thelist) )
23
Colin Bernet
import pandas as pd
sentence_list = ['sentence 1', 'sentence 2', 'sentence 3', 'sentence 4']
print("List of Sentences: \n", sentence_list)
sentence_series = pd.Series(sentence_list)
print("Series of Sentences: \n", sentence_series)

Documentation

Même si sentence_list est une liste de liste, ce code convertit toujours une liste en Pandas objet Series.

4
JustCurious

pd.Series(l) fonctionne en fait sur presque tous les types de liste et renvoie un objet Series:

import pandas as pd
l = [ ['sentence 1'], ['sentence 2'], ['sentence 3'] ] #works
l = ['sentence 1', 'sentence 2', 'sentence 3'] #works
l = numpy.array(['sentance 1', 'sentance2', 'sentance3'], dtype='object') #works

print(l, type(l))
ds = pd.Series(l)
print(ds, type(ds))

0    sentence 1
1    sentence 2
2    sentence 3
dtype: object <class 'pandas.core.series.Series'>
0
prosti

Pour convertir la liste myList en une série Pandas, utilisez:

mySeries = pd.Series(myList) 

C'est également l'un des moyens de base pour créer une série à partir d'une liste dans Pandas.

Exemple:

myList = ['string1', 'string2', 'string3']                                                                                                                
mySeries = pd.Series(myList)                                                                                                                             
mySeries                                                                                                                                                 
# Out: 
# 0    string1
# 1    string2
# 2    string3
# dtype: object

Notez que Pandas devinera le type de données des éléments de la liste car une série n'admet pas les types mixtes (contrairement à Python listes). Dans le exemple au-dessus du type de données déduit était object (le Python string) car c'est le plus général et peut accueillir tous les autres types de données (voir data types ).

Il est possible de spécifier un type de données lors de la création d'une série:

myList= [1, 2, 3] 

# inferred data type is integer
pd.Series(myList).dtype                                                                                                                        
# Out:
# dtype('int64')

myList= ['1', 2, 3]                                                                                                                                     

# data type is object  
pd.Series(myList).dtype                                                                                                                                                                                                                                                                
# Out: 
# dtype('O')

On peut spécifier dtype comme entier:

myList= ['1', 2.2, '3']
mySeries = pd.Series(myList, dtype='int')  
mySeries.dtype                                                                                                                                 
# Out:
# dtype('int64')

Mais cela ne fonctionnera que si tous les éléments de la liste peuvent être convertis dans le type de données souhaité.

0
user2314737