팬더 DataFrame의 첫 번째 열을 시리즈로 얻는 방법은 무엇입니까?


142

나는 시도했다 :

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

그리고 sSeries가 아닌 DataFrame을 가져옵니다.

답변:


141
>>> 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에서 더 이상 사용되지 않으므로 사용하지 마십시오. loc또는 iloc대신 사용하십시오 . 이 질문에 대한 의견과 다른 답변을 참조하십시오.


4
df.set_index('x').y
herrfz

4
이름에 숫자가있는 열이있는 경우 모호하지 않기 때문에 .iloc 대안을 추가 할 가치가 있습니다 (Jeff 가이 페이지에서 추가로 제안한대로).
sapo_cosmico

4
답은 2013 년에 주어졌다. 내가 기억하는 한, .iloc그때는 아직 없었습니다. 2016 년에 정답은 Jeff 's입니다 (결국 그는 pandas신입니다. ;-)). API 변경으로 인한 답변 업데이트에 대한 SO의 정책이 무엇인지 잘 모르겠습니다. 나는이 답변에 대한 투표 수에 대해 솔직히 놀랐다. 그것이 사람들에게 유용하다고 생각하지는 않았다 ...
herrfz

2
또 다른 참고 : ix사용되지 않는 버전 0.20에서.
ayhan

5
ix더 이상 사용 iloc하지 말고 대신 사용하십시오 s = df.ix[:,0]. 참조 이 게시물 의 비교를 iloc하고 ix.
normanius

117

v0.11 +부터는 ...을 사용하십시오 df.iloc.

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

3
이것은 새 릴리스와 이전 릴리스와 가장 호환되는 버전입니다. 그리고 아마도 개발자 팀이 공식적 으로이 접근법을 홍보하기 때문에 가장 효율적입니다.
gaborous

116

다음 코드를 통해 첫 번째 열을 Series로 가져올 수 있습니다.

x[x.columns[0]]

마지막 열을 어떻게 얻을 수 있습니까?
폴리

다른 것들은 잘 작동하지만 이것은 더 직관적 인 것 같습니다.
elPastor

6
이름이 같은 열이 여러 개인 경우에는 좋지 않습니다. 열 이름이 고유해야하는지 여부는 별도의 토론입니다.
Vishal

@Pollyx[x.columns[x.columns.size-1]]
fujianjin6471

13

이것이 가장 간단한 방법이 아닙니까?

열 이름으로 :

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

9
이 특정 경우에 첫 번째 열의 이름 ( "x")을 알고 있지만 질문의 의미는 "첫 번째 열인 REGARDLESS (이름의 REGARDLESS)에 액세스하는 방법"입니다. 또한 이와 같은 열 ( df.x)에 액세스하는 것은 일반적이지 않습니다. 열 이름에 공백이 있으면 어떻게됩니까? 열 이름이 DataFrame-s 속성 이름 과 일치하면 어떻게됩니까? 를 사용하여 열에 액세스하는 것이 더 일반적입니다 __getitem__(예 :) df["x"].
ponadto

2
예를 들어 열의 헤더에 공백이 있으면 작동하지 않습니다.
Jean-François Corbett

3

이것은 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

0
df[df.columns[i]]

여기서 i열의 위치 / 번호는 0 에서 시작 합니다.

그래서, i = 0첫 번째 열입니다.

당신은 또한 사용하여 마지막 열을 얻을 수 있습니다 i = -1

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.