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

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

总结

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

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容