1,首先是loc是根据行来进行切数据
(1) index为行,columns为列,当行为字符串时:
代码如下:
import pandas as pd
from pandas import DataFrame
data = [[4,5,6],[7,8,9]]
index = ['d', 'e']
columns = ['a', 'b', 'c']
df = DataFrame(data = data, index = index, columns = columns)
df
a b c
d 4 5 6
e 7 8 9
print(df.loc['d'])
a 4
b 5
c 6
Name: d, dtype: int64
print(df.loc['d']['a'])
4
(2) 当index为int型时:
import pandas as pd
from pandas import DataFrame
data = [[4,5,6],[7,8,9]]
index = [0, 1]
columns = ['a', 'b', 'c']
df = DataFrame(data = data, index = index, columns = columns)
df
a b c
0 4 5 6
1 7 8 9
print(df.loc[1])
a 7
b 8
c 9
Name: 1, dtype: int64
(3) loc 只能获取行数据,如果获取的行数据不存在就会报错。
当获取多行数据时:
import pandas as pd
from pandas import DataFrame
data = [[4,5,6],[7,8,9]]
index = [0, 1]
columns = ['a', 'b', 'c']
df = DataFrame(data = data, index = index, columns = columns)
df
a b c
0 4 5 6
1 7 8 9
print(df.loc[0:2])
a b c
0 4 5 6
1 7 8 9
In [65]:
print(df.loc[1])
a 7
b 8
c 9
Name: 1, dtype: int64
print(df.loc[1:])
a b c
1 7 8 9
(4) 当获取数据的某列时,以及特定的切片时:
获取b列以及第一行的bc列数据:
import pandas as pd
from pandas import DataFrame
data = [[4,5,6],[7,8,9]]
index = [0, 1]
columns = ['a', 'b', 'c']
df = DataFrame(data = data, index = index, columns = columns)
df
a b c
0 4 5 6
1 7 8 9
print(df.loc[:,'b'])
0 5
1 8
Name: b, dtype: int64
print(df.loc[1,['b','c']])
b 8
c 9
Name: 1, dtype: int64
dataframe的索引[1:3]是包含1,2,3的,与平时的不同。
2. iloc是根据行号和列号来进行取数据的:
import pandas as pd
from pandas import DataFrame
data = [[4,5,6],[7,8,9]]
index = ['d', 'e']
columns = ['a', 'b', 'c']
df = DataFrame(data = data, index = index, columns = columns)
df
a b c
d 4 5 6
e 7 8 9
print(df.iloc[0])
a 4
b 5
c 6
Name: d, dtype: int64
print(df.iloc[0,1])
5
3.ix 结合两种的混合索引
import pandas as pd
from pandas import DataFrame
data = [[4,5,6],[7,8,9]]
index = ['d', 'e']
columns = ['a', 'b', 'c']
df = DataFrame(data = data, index = index, columns = columns)
df
a b c
d 4 5 6
e 7 8 9
print(df.ix[0])
a 4
b 5
c 6
print(df.ix['d'])
a 4
b 5
c 6
Name: d, dtype: int64
abc04561789