Я старался:
x=pandas.DataFrame(...)
s = x.take([0], axis=1)
И s
получает DataFrame, а не серию.
Ответы:
>>> 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
он устарел в pandas 0.20.2, поэтому не используйте его. Используйте loc
или iloc
вместо. Смотрите комментарии и другие ответы на этот вопрос.
.iloc
тогда еще не было. В 2016 году правильный ответ - Джефф (в конце концов, он pandas
Бог, заметьте ;-)). Я не уверен, какова политика SO относительно обновления ответов в связи с изменением API; Я искренне удивлен количеством голосов за этот ответ, не думаю, что он был так полезен для людей ...
ix
было устаревшим в версии 0.20.
ix
не должны использоваться больше, используйте iloc
вместо этого: s = df.ix[:,0]
. См. Этот пост для сравнения iloc
и ix
.
Начиная с v0.11 +, ... пользуйтесь df.iloc
.
In [7]: df.iloc[:,0]
Out[7]:
0 1
1 2
2 3
3 4
Name: x, dtype: int64
Вы можете получить первый столбец как серию, используя следующий код:
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