pandas获取对应的行或者列方式

2024-03-04 0 177
目录
  • loc
    • 获取单行
    • 获取特定的几行
    • 获取特定行和列
    • 通过bool值进行选择
    • 通过条件进行选择获取
    • 通过回调函数获取
  • 对数值进行修改
    • 总结

      loc

      通过标签或布尔数组访问一组行和列。

      .loc[] 主要基于标签,但也可以与布尔数组一起使用。

      允许的输入为:

      • 单个标签,例如’a’,
      • 标签列表或数组,例如。[‘a’, ‘b’, ‘c’]
      • 带有标签的切片对象,例如’a’:‘f’。
      • 与切片轴长度相同的布尔数组,例如。[True, False, True]
      • 可对齐的布尔系列。遮罩之前,键的索引将对齐。
      • 可对齐索引。返回的选择的索引将作为输入。

      获取单行

      为了获取当行,只需要利用行号就能够获取,

      >>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
      … index=[\’cobra\’, \’viper\’, \’sidewinder\’],
      … columns=[\’max_speed\’, \’shield\’])
      >>> print(df.loc[\”viper\”])
      max_speed 4
      shield 5
      Name: viper, dtype: int64

      获取特定的几行

      • 可以将多个行号组成一个list,然后作为参数输入进去

      >>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
      … index=[\’cobra\’, \’viper\’, \’sidewinder\’],
      … columns=[\’max_speed\’, \’shield\’])
      >>> print(df.loc[[\”cobra\”,\’sidewinder\’]])
      max_speed shield
      cobra 1 2
      sidewinder 7 8

      • 利用切片获取多个连续的行

      在利用切片时,也需要使用label进行切片,否则pandas不会识别

      >>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
      … index=[\’cobra\’, \’viper\’, \’sidewinder\’],
      … columns=[\’max_speed\’, \’shield\’])
      >>> print(df.loc[ \’viper\’: \’sidewinder\’])
      max_speed shield
      viper 4 5
      sidewinder 7 8

      获取特定行和列

      >>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
      … index=[\’cobra\’, \’viper\’, \’sidewinder\’],
      … columns=[\’max_speed\’, \’shield\’])
      >>> print(df.loc[ \’viper\’,\’shield\’])
      5

      也可以通过切片和列组合,获取特定的数值

      >>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
      … index=[\’cobra\’, \’viper\’, \’sidewinder\’],
      … columns=[\’max_speed\’, \’shield\’])
      >>> print(df.loc[\’viper\’: \’sidewinder\’,:])
      max_speed shield
      viper 4 5
      sidewinder 7 8

      通过bool值进行选择

      >>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
      … index=[\’cobra\’, \’viper\’, \’sidewinder\’],
      … columns=[\’max_speed\’, \’shield\’])
      >>> df.loc[[False, False, True]]
      max_speed shield
      sidewinder 7 8

      通过条件进行选择获取

      通过条件获取,时间也是通过bool获取的一种特例,

      >>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
      … index=[\’cobra\’, \’viper\’, \’sidewinder\’],
      … columns=[\’max_speed\’, \’shield\’])
      >>> df.loc[df[\’shield\’] > 6]
      max_speed shield
      sidewinder 7 8

      通过下面的结果,我们可以看出,通过条件获取后是一个对象,该对象的值就是一个bool列表,通过条件获取就是通过这个bool列表进行获取

      >>> s = df[\’shield\’] > 6
      >>> type(s)
      <class \’pandas.core.series.Series\’>
      >>> s.values
      array([False, False, True])

      通过回调函数获取

      >>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
      … index=[\’cobra\’, \’viper\’, \’sidewinder\’],
      … columns=[\’max_speed\’, \’shield\’])
      >>> df.loc[lambda df: df[\’shield\’] == 8]
      max_speed shield
      sidewinder 7 8

      对数值进行修改

      这里主要讲的是对数值的修改是永久性的,

      >>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
      … index=[\’cobra\’, \’viper\’, \’sidewinder\’],
      … columns=[\’max_speed\’, \’shield\’])
      >>> df.loc[[\’viper\’, \’sidewinder\’], [\’shield\’]] = 50
      >>> df
      max_speed shield
      cobra 1 2
      viper 4 50
      sidewinder 7 50

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持悠久资源网。

      您可能感兴趣的文章:

      • Pandas如何提取单元格中的文字并进行切片处理
      • Pythonpandas如何获取数据的行数和列数
      • Python pandas数据预处理之行数据复制方式
      • pandas实现对一列/多列进行数据区间筛选
      • pandas中DataFrame新增行及global变量的使用方式
      • pandas如何获取某个数据的行号

      收藏 (0) 打赏

      感谢您的支持,我会继续努力的!

      打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
      点赞 (0)

      悠久资源 Python pandas获取对应的行或者列方式 https://www.u-9.cn/jiaoben/python/183086.html

      常见问题

      相关文章

      发表评论
      暂无评论
      官方客服团队

      为您解决烦忧 - 24小时在线 专业服务