如何获得熊猫数据框架的第一列作为一个系列?

我试过:

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

s得到的是 DataFrame,而不是 Series。

416932 次浏览

您可以通过以下代码获得作为 Series 的第一列:

x[x.columns[0]]
>>> 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年6月之后读到这篇文章,ix已经在0.20.2版本的大熊猫中被弃用了,所以不要使用它。使用 lociloc代替。请参阅对此问题的评论和其他答案。

从 v0.11 + ,... 使用 df.iloc

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

这不是最简单的方法吗?

列名:

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

当你想从一个 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获取最后一列