简体   繁体   English

如何将 Pandas DataFrame 的第一列作为系列获取?

[英]How to get the first column of a pandas DataFrame as a Series?

I tried:我试过了:

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

And s gets a DataFrame, not a Series.并且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'>
>>>

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

UPDATE更新

If you're reading this after June 2017, ix has been deprecated in pandas 0.20.2, so don't use it.如果您是在 2017 年 6 月之后阅读本文,则ix在 pandas 0.20.2 中已被弃用,因此请勿使用它。 Use loc or iloc instead.请改用lociloc See comments and other answers to this question.请参阅此问题的评论和其他答案。

From v0.11+, ... use df.iloc .从 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]]

Isn't this the simplest way?这不是最简单的方法吗?

By column name:按列名:

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

This works great when you want to load a series from a csv file当您想从 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]]

where i is the position/number of the column(starting from 0 ).其中i是列的位置/编号(从0开始)。

So, i = 0 is for the first column.因此, i = 0用于第一列。

You can also get the last column using i = -1您还可以使用i = -1获取最后一列

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM