http://liao.cpython.org/pandas10/
http://liao.cpython.org/pandas11/
[]选择列:DataFrame使用了[ ]则是选择了一个字段所有数据即一列,而Series则是会得到某行的数据。
val = np.arange(10,40).reshape(10,3)
idx = 'ax bx cx'.split()
df1 = pd.DataFrame(val,columns = idx)
df1['ax']
Out[214]:
0 10
1 13
2 16
3 19
4 22
5 25
6 28
7 31
8 34
9 37
Name: ax, dtype: int32
选择多列 [[ ]]
df1[['ax','bx']]
Out[216]:
ax bx
0 10 11
1 13 14
2 16 17
3 19 20
4 22 23
5 25 26
6 28 29
7 31 32
8 34 35
9 37 38
loc[] 选择行
df1.loc[1]
Out[224]:
ax 13
bx 14
cx 15
Name: 1, dtype: int32
loc[[ ]]选择多行
df1.loc[[0,1]]
Out[223]:
ax bx cx
0 10 11 12
1 13 14 15
type(df1.loc[0])
Out[225]: pandas.core.series.Series
type(df1.loc[[0,1]])
Out[226]: pandas.core.frame.DataFrame
iloc[]选择行:与loc[]不同之处,iloc[]里是位置信息,而loc[]里是标签信息。
省略
at[] 选择标签指定某值,尽量还是用label的形式
val = np.arange(10,40).reshape(10,3)
idx = 'ax bx cx'.split()
label = 'a b c d e f g h i j'.split()
df1 = pd.DataFrame(val,columns = idx,index = label)
df1.at['e','cx']
Out[230]: 24
iat[ ] 选择位置上的值
ix[]混合选择:ix[]的[]里可以是label数据和位置数据的混合使用。
**小结:在at、iat、ix等先给出的是行信息,后边是列信息。
在pandas里DataFrame[label]或者DataFrame[index]选择的是列。而DataFrame[start:end]则是通过切片选择的是行。
val = np.arange(10,40).reshape(10,3)
idx = 'ax bx cx'.split()
label = 'a b c d e f g h i j'.split()
df1 = pd.DataFrame(val,columns = idx,index = label)
Out[236]:
ax bx cx
a 10 11 12
b 13 14 15
c 16 17 18
d 19 20 21
e 22 23 24
f 25 26 27
g 28 29 30
h 31 32 33
i 34 35 36
j 37 38 39
df1['ax']
Out[237]:
a 10
b 13
c 16
d 19
e 22
f 25
g 28
h 31
i 34
j 37
Name: ax, dtype: int32
df1['a':'c']
Out[238]:
ax bx cx
a 10 11 12
b 13 14 15
c 16 17 18
在DataFrame的[]里用切片很难选择多行多列数据,但DataFrame的loc、iloc等可以通过切片选择多行多列数据。
df1.loc['a'] #这里选择出来的是行
Out[239]:
ax 10
bx 11
cx 12
Name: a, dtype: int32
df1.loc['a':'c','ax':'cx'] #同样的loc, 切出来是行+列的切片
Out[240]:
ax bx cx
a 10 11 12
b 13 14 15
c 16 17 18