web-dev-qa-db-ja.com

パンダDataFrameの最初の列をシリーズとして取得する方法

私は試した:

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

そしてsはSeriesではなくDataFrameを取得します。

106
Yariv
>>> 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'>
>>>

=================================================== ========================

UPDATE

2017年6月以降にこれを読んでいるのであれば、ixはパンダ0.20.2で廃止されているので、使用しないでください。代わりにlocまたはilocを使用してください。この質問に対するコメントやその他の回答を見てください。

109
herrfz

次のコードで最初の列をSeriesとして取得できます。

x[x.columns[0]]
94
HYRY

V0.11以降、... df.ilocを使用してください。

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

これは最も簡単な方法ではないでしょうか。

列名で:

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
13
SamJ

あなたが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
1