Відповіді:
>>> 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.ix[:,0]
>>> type(s)
<class 'pandas.core.series.Series'>
>>>
===================================================== ==========================
ОНОВЛЕННЯ
Якщо ви читаєте це після червня 2017 року, ix
застаріле в пандах 0.20.2, тому не використовуйте його. Використовуйте loc
або iloc
замість цього. Дивіться коментарі та інші відповіді на це питання.
.iloc
тоді ще не було цього. У 2016 році правильна відповідь - це Джефф (адже він pandas
Бог, пам'ятайте ;-)). Я не впевнений, яка політика SO щодо оновлення відповідей через зміну API; Я чесно здивований кількістю голосів за цю відповідь, не вважав, що це корисно людям ...
ix
було застарілим в версії 0.20.
ix
не повинні використовуватися більше, використовуйте iloc
замість цього: s = df.ix[:,0]
. Дивіться цю публікацію для порівняння iloc
та ix
.
Ви можете отримати перший стовпець у вигляді серії за наступним кодом:
x[x.columns[0]]
x[x.columns[x.columns.size-1]]
Це не найпростіший спосіб?
За назвою стовпця:
In [20]: df = pd.DataFrame({'x' : [1, 2, 3, 4], 'y' : [4, 5, 6, 7]})
In [21]: df
Out[21]:
x y
0 1 4
1 2 5
2 3 6
3 4 7
In [23]: df.x
Out[23]:
0 1
1 2
2 3
3 4
Name: x, dtype: int64
In [24]: type(df.x)
Out[24]:
pandas.core.series.Series
df.x
) не є загальним - що робити, якщо назва стовпця містить пробіли? Що робити, якщо назва стовпця збігається з DataFrame
атрибутом -s? Більш загальним є доступ до стовпців за допомогою __getitem__
(тобто так df["x"]
:).
Це чудово працює, коли ви хочете завантажити серію з файлу csv
x = pd.read_csv('x.csv', index_col=False, names=['x'],header=None).iloc[:,0]
print(type(x))
print(x.head(10))
<class 'pandas.core.series.Series'>
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
df[df.columns[i]]
де i
позиція / номер стовпця (починаючи з 0 ).
Отже, i = 0
для першої колонки.
Ви також можете отримати останній стовпець, використовуючи i = -1
df.set_index('x').y