DataFrame筛选出指定列值的行

对于一个DataFrame,常常需要筛选出某列为指定值的行。

pandas中获取数据的有以下几种方法:

  • 布尔索引
  • 位置索引
  • 标签索引
  • 使用API

假设df数据如下:

import pandas as pd
import numpy as np

df = pd.DataFrame({'code': '000001.SZ 000002.SZ 000006.SZ 000009.SZ'.split(),
                   'open': '1.2 20 3.5 2.8'.split(),
                   'close': np.arange(4),
                   'high': np.arange(4) * 2})

数据如下:

>>> df
        code open  close  high
0  000001.SZ  1.2      0     0
1  000002.SZ   20      1     2
2  000006.SZ  3.5      2     4
3  000009.SZ  2.8      3     6

问题如下:

找出符合条件的所有行,即条件判断bool值为true,如找出code为000002.SZ的行:

df[df['code'] == '000002.SZ']

这会列出所有使得条件 df[‘code’] == ‘000002.SZ’ 为true的所有行,输出如下:

>>> df[df['code'] == '000002.SZ']
        code open  close  high
1  000002.SZ   20      1     2

使用iloc方法,根据索引的位置来查找数据的。这个例子需要先找出符合条件的行所在位置。

mask = df['code'] == '000002.SZ'
pos = np.flatnonzero(mask)
df.iloc[pos]

df.iloc[1:2]

输出与之前相同。

适用于DataFrame的行列都是有标签的情形。

结果如下:

>>> df.loc['000002.SZ', :]
code     000002.SZ
open            20
close            1
high             2
Name: 000002.SZ, dtype: object
>>>
>>> df.loc[df['code']=='000002.SZ']
                code open  close  high
code
000002.SZ  000002.SZ   20      1     2

适用于数据量比较大的情形,方法为:pd.DataFrame.query。

df.query('code=="000002.SZ"')

df.query('code=="000002.SZ" | code=="000006.SZ"')

结果如下:

>>> df.query('code=="000002.SZ"')
                code open  close  high
code
000002.SZ  000002.SZ   20      1     2
>>>
>>> # 多条件
>>> df.query('code=="000002.SZ" | code=="000006.SZ"')
                code open  close  high
code
000002.SZ  000002.SZ   20      1     2
000006.SZ  000006.SZ  3.5      2     4

除了上面判断相等的情况,也可以结合条件判断一起使用。

df.loc[df['column_name'] != 'some_value']

df.loc[~df['column_name'].isin('some_values')]

df功能强大,且用且总结。

https://www.cnblogs.com/small-bud/p/12380357.html

Original: https://blog.csdn.net/guotianqing/article/details/119917236
Author: guotianqing
Title: DataFrame筛选出指定列值的行

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/673968/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球