• Pandas loc与iloc


    先来看一下示例:

    1. #!/usr/bin/python
    2. import pandas as pd
    3. # 三个字段 name, site, age
    4. nme = ["Google", "Runoob", "Taobao", "Wiki"]
    5. st = ["www.google.com", "www.runoob.com", "www.taobao.com", "www.wikipedia.org"]
    6. ag = [90, 40, 80, 90]
    7. # 字典
    8. dict = {'name': nme, 'site': st, 'age': ag}
    9. df = pd.DataFrame(dict, index=[1,2,3,4])
    10. print(df)
    11. print(df.loc[1:3,['name','site']])
    12. print(df.iloc[1:3,[0,1]])

    输出:

    1. name site age
    2. 1 Google www.google.com 90
    3. 2 Runoob www.runoob.com 40
    4. 3 Taobao www.taobao.com 80
    5. 4 Wiki www.wikipedia.org 90
    6. name site
    7. 1 Google www.google.com
    8. 2 Runoob www.runoob.com
    9. 3 Taobao www.taobao.com
    10. name site
    11. 2 Runoob www.runoob.com
    12. 3 Taobao www.taobao.com

    将df的索引设置成了整数的1,2,3,4;

    df.loc[row selection, column selection]

    其中loc的row是依据指定的标签来查找的,比如这里查找的就是标签1到3的行数据。

    df.iloc [row selection, column selection]

    其中iloc的row是根据索引来查找的,比如这里查找的就是第一行到第三行的数据,取值范围是length-1,这里即3-1行数据;其中iloc的i即是index的意思。

    1. df = pd.DataFrame(dict, index=[1,2,3,4])
    2. print('df数据:\n',df,'\n')
    3. #print(df.loc[1:3,['name','site']])
    4. print('iloc取第一行:\n',df.iloc[0],'\n')
    5. print('iloc取最后一行:\n',df.iloc[-1],'\n')
    6. out:
    7. df数据:
    8. name site age
    9. 1 Google www.google.com 90
    10. 2 Runoob www.runoob.com 40
    11. 3 Taobao www.taobao.com 80
    12. 4 Wiki www.wikipedia.org 90
    13. iloc取第一行:
    14. name Google
    15. site www.google.com
    16. age 90
    17. Name: 1, dtype: object
    18. iloc取最后一行:
    19. name Wiki
    20. site www.wikipedia.org
    21. age 90
    22. Name: 4, dtype: object

    其中iloc只取一行时返回的是Series数据。

    传递列表可转为Dataframe:

    1. print('iloc取第一行:\n',df.iloc[[0]],'\n')
    2. out:
    3. iloc取第一行:
    4. name site age
    5. 1 Google www.google.com 90

    loc:

    1.定义

    loc按照标签或者索引、布尔值或者条件进行选择数据,这种选择数据的方法较为常用。

    (1)根据索引选择单行或单列

    1. df = pd.DataFrame(dict, index=[1,2,3,4])
    2. print('df数据:\n',df,'\n')
    3. df.set_index('name', inplace=True)
    4. print('设置name为索引:\n', df, '\n')
    5. print('loc查找:\n', df.loc[['Google','Wiki']], '\n')
    6. out:
    7. df数据:
    8. name site age
    9. 1 Google www.google.com 90
    10. 2 Runoob www.runoob.com 40
    11. 3 Taobao www.taobao.com 80
    12. 4 Wiki www.wikipedia.org 90
    13. 设置name为索引:
    14. site age
    15. name
    16. Google www.google.com 90
    17. Runoob www.runoob.com 40
    18. Taobao www.taobao.com 80
    19. Wiki www.wikipedia.org 90
    20. loc查找:
    21. site age
    22. name
    23. Google www.google.com 90
    24. Wiki www.wikipedia.org 90

    (2)使用loc进行布尔值/逻辑索引

    查找site为"www.google.com"的数据,在查找一些特定属性的数据时有用。

    1. print('loc查找:\n', df.loc[df['site'] == 'www.google.com'], '\n')
    2. out:
    3. loc查找:
    4. site age
    5. name
    6. Google www.google.com 90

    (3)使用loc修改Dateframe中的值

    先选出想要的数据,然后进行赋值操作。

    1. df.loc[df['site'] == 'www.google.com', 'age'] = 80
    2. out:
    3. loc查找:
    4. site age
    5. name
    6. Google www.google.com 80
    7. df.loc[df['age'] > 80, 'site'] = 'www.google.com'
    8. print('loc查找:\n', df.loc[df['site'] == 'www.google.com'], '\n')
    9. out:
    10. loc查找:
    11. site age
    12. name
    13. Google www.google.com 90
    14. Wiki www.google.com 90
    1. #这样查找也可以,但功能比loc少很多
    2. print(df[df['age'] > 80])
    3. out:
    4. name site age
    5. 1 Google www.google.com 90
    6. 4 Wiki www.wikipedia.org 90

    模糊查找,使用startswith和endswith

    1. print('查找site以www开头的数据:\n', df.loc[df['site'].str.startswith('www')], '\n')
    2. print('查找site以.com结尾的数据:\n', df.loc[df['site'].str.endswith('.com')], '\n')
    3. out:
    4. 查找site以www开头的数据:
    5. name site age
    6. 1 Google www.google.com 90
    7. 2 Runoob www.runoob.com 40
    8. 3 Taobao www.taobao.com 80
    9. 4 Wiki www.wikipedia.org 90
    10. 查找site以.com结尾的数据:
    11. name site age
    12. 1 Google www.google.com 90
    13. 2 Runoob www.runoob.com 40
    14. 3 Taobao www.taobao.com 80

    参考:Pandas经典用法:数据筛选之iloc和loc_我爱Python数据挖掘的博客-CSDN博客_pandas.iloc

    第008篇:数据选择 loc & iloc - 知乎

    pandas中iloc与loc的使用_atwdy的博客-CSDN博客_pandas的iloc和loc

  • 相关阅读:
    【毕业设计】基于单片机的指纹识别考勤系统 - 物联网 stm32
    最小安装CentOS7后安装Git2.37.2 220828记录
    封校大学生在宿舍无聊玩起图像大找茬——一个关于游戏的练手小项目(一起领略Python脚本的风采吧)
    AutoGPT:让 AI 帮你完成任务事情 | 开源日报 No.54
    我一个测试仔,做了20多天开发的感受......
    跳跃游戏 I - VII
    可持续建筑分论坛精彩回顾 | 第二届始祖数字化可持续发展峰会
    2023最新SSM计算机毕业设计选题大全(附源码+LW)之java找学互助系统52568
    ETCD集群搭建(实践可用)
    JAVA 简单缓存实现-nacos
  • 原文地址:https://blog.csdn.net/xiadeliang1111/article/details/126683235