pandas.DataFrame.loc和pandas.DataFrame.iloc比较

发布时间 2023-04-25 21:36:45作者: yayagogogo

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所在位置来定位行和列,使用切片时符合前闭后开原则。