Câu trả lời:
>>> 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'>
>>>
================================================== =========================
CẬP NHẬT
Nếu bạn đang đọc bài này sau tháng 6 năm 2017, ix
đã bị phản đối trong gấu trúc 0.20.2, vì vậy đừng sử dụng nó. Sử dụng loc
hoặc iloc
thay thế. Xem ý kiến và câu trả lời khác cho câu hỏi này.
.iloc
đó chưa có. Năm 2016, câu trả lời chính xác là của Jeff (sau tất cả, anh ấy là pandas
Chúa, hãy nhớ đến bạn ;-)). Tôi không chắc chính sách của SO liên quan đến việc cập nhật câu trả lời do thay đổi API; Tôi thực sự ngạc nhiên về số phiếu bầu cho câu trả lời này, không nghĩ rằng nó hữu ích với mọi người ...
ix
không nên được sử dụng nữa, sử dụng iloc
thay thế : s = df.ix[:,0]
. Xem bài đăng này để so sánh iloc
và ix
.
Bạn có thể lấy cột đầu tiên dưới dạng Sê-ri bằng mã sau:
x[x.columns[0]]
x[x.columns[x.columns.size-1]]
Đây không phải là cách đơn giản nhất sao?
Theo tên cột:
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
) không chung chung - nếu tên cột chứa khoảng trắng thì sao? Nếu tên của cột trùng với DataFrame
tên thuộc tính -s thì sao? Việc truy cập các cột bằng cách sử dụng __getitem__
(ví dụ như vậy df["x"]
:).
Điều này hoạt động rất tốt khi bạn muốn tải một loạt từ tệp 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]]
nơi i
được vị trí / số cột (bắt đầu từ 0 ).
Vì vậy, i = 0
là cho cột đầu tiên.
Bạn cũng có thể lấy cột cuối cùng bằng cách sử dụng i = -1
df.set_index('x').y