168 votes

Comment obtenir la première colonne d'un DataFrame pandas en tant que série ?

J'ai essayé:

x=pandas.DataFrame(...)
s = x.take([0], axis=1)

Et s obtient un DataFrame, pas une Series.

155voto

herrfz Points 1041
>>> import pandas as pd
>>> df = pd.DataFrame({'x' : [1, 2, 3, 4], 'y' : [4, 5, 6, 7]})
>>> df
   x  y
0  1  4
1  2  5
2  3  6
3  4  7
>>> s = df.loc[:, 'x']
>>> type(s)

>>>

\===========================================================================

MISE À JOUR

Si vous lisez ceci après juin 2017, ix a été abandonné dans pandas 0.20.2, donc ne l'utilisez pas. Utilisez plutôt loc ou iloc. Voir les commentaires et autres réponses à cette question.

143voto

Jeff Points 27612

À partir de la v0.11+, ... utilisez df.iloc.

In [7]: df.iloc[:,0]
Out[7]: 
0    1
1    2
2    3
3    4
Name: x, dtype: int64

123voto

HYRY Points 26340

Vous pouvez obtenir la première colonne en tant que série en suivant le code suivant:

x[x.columns[0]]

12voto

SamJ Points 137

N'est-ce pas la façon la plus simple?

Par nom de colonne :

Dans [20]: df = pd.DataFrame({'x' : [1, 2, 3, 4], 'y' : [4, 5, 6, 7]})
Dans [21]: df
Dehors [21]:
    x   y
0   1   4
1   2   5
2   3   6
3   4   7

Dans [23]: df.x
Dehors [23]:
0    1
1    2
2    3
3    4
Nom : x, dtype : int64

Dans [24]: type(df.x)
Dehors [24]:
pandas.core.series.Series

4voto

Cela fonctionne très bien lorsque vous voulez charger une série à partir d'un fichier csv

x = pd.read_csv('x.csv', index_col=False, names=['x'],header=None).iloc[:,0]
print(type(x))
print(x.head(10))

0    110.96
1    119.40
2    135.89
3    152.32
4    192.91
5    177.20
6    181.16
7    177.30
8    200.13
9    235.41
Name: x, dtype: float64

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X