ฉันเหนื่อย:
x=pandas.DataFrame(...)
s = x.take([0], axis=1)
และs
รับ DataFrame ไม่ใช่ Series
ฉันเหนื่อย:
x=pandas.DataFrame(...)
s = x.take([0], axis=1)
และs
รับ DataFrame ไม่ใช่ Series
คำตอบ:
>>> 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 ix
มีการคัดค้านในแพนด้า 0.20.2 ดังนั้นอย่าใช้มัน ใช้loc
หรือiloc
แทน ดูความคิดเห็นและคำตอบอื่น ๆ สำหรับคำถามนี้
.iloc
ได้ยังไม่มีในตอนนั้น ในปี 2559 คำตอบที่ถูกต้องคือเจฟฟ์ (หลังจากเขาคือpandas
พระเจ้าโปรดทราบ ;-)) ฉันไม่แน่ใจว่านโยบายของ SO เกี่ยวกับการอัปเดตคำตอบเนื่องจากการเปลี่ยนแปลง API เป็นอย่างไร ฉันประหลาดใจตรงไปตรงมาโดยจำนวนของคะแนนสำหรับคำตอบนี้ไม่ได้คิดว่ามันเป็นที่ที่มีประโยชน์กับคนที่ ...
จาก 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]]
x[x.columns[x.columns.size-1]]
นี่ไม่ใช่วิธีที่ง่ายที่สุดใช่ไหม
ตามชื่อคอลัมน์:
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
) ไม่ใช่ชื่อทั่วไป - จะเกิดอะไรขึ้นหากชื่อคอลัมน์มีช่องว่าง เกิดอะไรขึ้นถ้าชื่อของคอลัมน์ตรงกับDataFrame
ชื่อแอตทริบิวต์ -s? มันทั่วไปมากขึ้นในการเข้าถึงโดยใช้คอลัมน์__getitem__
(เช่นชอบดังนั้น: df["x"]
)
วิธีนี้ใช้งานได้ดีเมื่อคุณต้องการโหลดซีรีส์จากไฟล์ 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
df.set_index('x').y