pandas.DataFrame.loc
通过标签或布尔数组访问一组行和列。
代码示例
import pandas as pd
import numpy as np
#利用列表创建DataFrame
data = [[3,"negative",2],[4,"negative",6],[11,"positive",0],[12,"positive",2]]
df1 = pd.DataFrame(data, columns=["xuhao","result","value"])
print(df1)
# output
# xuhao result value
# 0 3 negative 2
# 1 4 negative 6
# 2 11 positive 0
# 3 12 positive 2
print(df1.loc[[1,2]])
# output
# xuhao result value
# 1 4 negative 6
# 2 11 positive 0
df2 = pd.DataFrame(data, columns=["xuhao","result","value"],index=["a","b","c","d"])
print(df2)
# output
# xuhao result value
# a 3 negative 2
# b 4 negative 6
# c 11 positive 0
# d 12 positive 2
print(df2.loc["b"]) #将行作为Series返回
# output
# xuhao 4
# result negative
# value 6
# Name: b, dtype: object
print(df2.loc[["a","b"]]) #返回数据框
# output
# xuhao result value
# a 3 negative 2
# b 4 negative 6
print(df2.loc["a","value"]) #返回特定行特定列对应的值
# output
# 2
print(df2.loc["a":"c","value"]) #行为切片,返回值包括了"a"和"c"行
# output
# a 2
# b 6
# c 0
# Name: value, dtype: int64
print(df2.loc[[True,False,False,True]]) #利用布尔值返回特定行
# output
# xuhao result value
# a 3 negative 2
# d 12 positive 2
pandas.DataFrame.iloc
用于按位置选择的纯整数位置索引。
import pandas as pd
import numpy as np
#利用列表创建DataFrame
data = [[3,"negative",2],[4,"negative",6],[11,"positive",0],[12,"positive",2]]
df2 = pd.DataFrame(data, columns=["xuhao","result","value"],index=["a","b","c","d"])
print(df2)
# output
# xuhao result value
# a 3 negative 2
# b 4 negative 6
# c 11 positive 0
# d 12 positive 2
# #仅输入行index
print(df2.iloc[1]) #使用标量整数将行作为Series返回
# output
# xuhao 4
# result negative
# value 6
# Name: b, dtype: object
print(df2.iloc[[2]]) #使用整数列表返回子数据框
# output
# xuhao result value
# c 11 positive 0
print(df2.iloc[1:]) #使用切片输入行
# output
# xuhao result value
# b 4 negative 6
# c 11 positive 0
# d 12 positive 2
print(df2.iloc[[True,False,False,False]]) #利用布尔值输入
# output
# xuhao result value
# a 3 negative 2
# #输入行和列
print(df2.iloc[0,2]) #标量整数
# output
# 2
print(df2.iloc[[0,2],[1,2]]) #整数列表
# output
# result value
# a negative 2
# c positive 0
print(df2.iloc[:,[True, True, False]])
# output
# xuhao result
# a 3 negative
# b 4 negative
# c 11 positive
# d 12 positive
print(df2.iloc[:2,2]) #行为切片,前闭后开
# output
# a 2
# b 6
总结
pandas.DataFrame.loc是根据index值来定位行和列,并且使用切片时起始值和结束值均能取到;
pandas.DataFrame.iloc是根据index所在位置来定位行和列,使用切片时符合前闭后开原则。