.iloc()
、.loc()
、.ix()
In [3]:
import pandas as pd
data = {'a':[11,22,33,44],
'b':['aa','bb','cc','dd'],
'c':[9,8,7,6],
'd':[1,2,3,4]
}
df = pd.DataFrame(data)
df
Out[3]:
a | b | c | d | |
---|---|---|---|---|
0 | 11 | aa | 9 | 1 |
1 | 22 | bb | 8 | 2 |
2 | 33 | cc | 7 | 3 |
3 | 44 | dd | 6 | 4 |
In [4]:
df.iloc[0] #第一行
Out[4]:
a 11
b aa
c 9
d 1
Name: 0, dtype: object
In [20]:
df.iloc[0:3] #取 0 - 2 行的数据
Out[20]:
a | b | c | d | |
---|---|---|---|---|
0 | 11 | aa | 9 | 1 |
1 | 22 | bb | 8 | 2 |
2 | 33 | cc | 7 | 3 |
In [21]:
df.iloc[:,[1]] #第2列的所有行
Out[21]:
b | |
---|---|
0 | aa |
1 | bb |
2 | cc |
3 | dd |
In [22]:
df.iloc[0:1,[1]]
Out[22]:
b | |
---|---|
0 | aa |
In [23]:
df.iloc[0:2,[0,1]]
Out[23]:
a | b | |
---|---|---|
0 | 11 | aa |
1 | 22 | bb |
.loc()函数是通过标签选取数据,如果搞不懂什么是标签什么是位置
In [26]:
df.iloc[0] #选取第1行 因为第1行的行号是0所以和iloc效果相同
Out[26]:
a 11
b aa
c 9
d 1
Name: 0, dtype: object
In [28]:
#再创建一个df1用于示例
data = {'a':[11,22,33,44],
'b':['aa','bb','cc','dd'],
'c':[9,8,7,6],
'd':[1,2,3,4]
}
df1 = pd.DataFrame(data,index = ['a','b','c','d'])
df1
Out[28]:
a | b | c | d | |
---|---|---|---|---|
a | 11 | aa | 9 | 1 |
b | 22 | bb | 8 | 2 |
c | 33 | cc | 7 | 3 |
d | 44 | dd | 6 | 4 |
In [29]:
df1.loc['b']
Out[29]:
a 22
b bb
c 8
d 2
Name: b, dtype: object
In [30]:
df1.loc['b':]
Out[30]:
a | b | c | d | |
---|---|---|---|---|
b | 22 | bb | 8 | 2 |
c | 33 | cc | 7 | 3 |
d | 44 | dd | 6 | 4 |
In [31]:
df1.loc[:,['a']] # :是所有行 a是第a列
Out[31]:
a | |
---|---|
a | 11 |
b | 22 |
c | 33 |
d | 44 |
In [33]:
df1.loc[:,['a','b']]
Out[33]:
a | b | |
---|---|---|
a | 11 | aa |
b | 22 | bb |
c | 33 | cc |
d | 44 | dd |
In [34]:
df1.loc['a',['b','c']] #a行的 第b,c 列元素
Out[34]:
b aa
c 9
Name: a, dtype: object
ix就是把iloc和loc语法综合了,爱用哪个用哪个,不过在有些版本的pandas中取消了ix函数,我们再看一下df
df
a | b | c | d | |
---|---|---|---|---|
0 | 11 | aa | 9 | 1 |
1 | 22 | bb | 8 | 2 |
2 | 33 | cc | 7 | 3 |
3 | 44 | dd | 6 | 4 |
df.ix[1]
a 22
b bb
c 8
d 2
Name: 1, dtype: object
df1.ix['a']
a 11
b aa
c 9
d 1
Name: a, dtype: object
df1.ix[3,3] #通过行号选取指定位置的数据
4
df1.ix['a','a'] #通过标签选取指定位置的数据
11
按照条件选取数据
df1.loc[df1['a']==11]
a | b | c | d | |
---|---|---|---|---|
a | 11 | aa | 9 | 1 |
df1.loc[(df1['a']==11)&(df1['d']==1)]
a | b | c | d | |
---|---|---|---|---|
a | 11 | aa | 9 | 1 |