Python Pandas 列数据筛选方法汇总

Pandas 列数据筛选方法汇总


数据准备:

import pandas as pd
# 假设有 5 个人,分别参加了 4 门课程,获得了对应的分数
data = {'name' : pd.Series(['Alice', 'Bob', 'Cathy', 'Dany', 'Ella']),
        'Math_A' : pd.Series([1.1, 2.2, 3.3, 4.4, 5]),
        'English_A' : pd.Series([3, 2.6, 2, 1.7, 3]),
        'Math_B' : pd.Series([1.7, 2.5, 3.6, 2.4, 5]),
        'English_B' : pd.Series([5, 2.6, 2.4, 1.3, 3]),
     }

df = pd.DataFrame(data)
print(df)

** 运行结果:**

    name  Math_A  English_A  Math_B  English_B
0  Alice     1.1        3.0     1.7        5.0
1    Bob     2.2        2.6     2.5        2.6
2  Cathy     3.3        2.0     3.6        2.4
3   Dany     4.4        1.7     2.4        1.3
4   Ella     5.0        3.0     5.0        3.0

一、筛选得到指定的列

1.1 根据 label 选择特定的几列

print(df[['name', 'Math_A', 'Math_B']])
# 注意这里是 双重 []

运行结果:

    name  Math_A  Math_B
0  Alice     1.1     1.7
1    Bob     2.2     2.5
2  Cathy     3.3     3.6
3   Dany     4.4     2.4
4   Ella     5.0     5.0

1.2 选择单列的两种方式

print(df['name'])
# 注意这里就是 单 []
print(df.name)

运行结果:

0    Alice
1      Bob
2    Cathy
3     Dany
4     Ella
Name: name, dtype: object
0    Alice
1      Bob
2    Cathy
3     Dany
4     Ella
Name: name, dtype: object

1.3 通过正则表达式选择列

print(df.filter(regex='B$')) 
# 选择以 'B' 为结尾的 label

运行结果:

   Math_B  English_B
0     1.7        5.0
1     2.5        2.6
2     3.6        2.4
3     2.4        1.3
4     5.0        3.0

常用正则表达式:
截屏2020-05-20 下午7.55.41.png

二、同时对 行 和 列 进行筛选

2.1 通过切片 df.loc[ : , : ]

print(df.loc[:2,'English_A':'English_B'])
# 注意,这里的切片 与 Python 本身的不同,包含了结尾!
# 所以这个例子中包含了 第 2 行 和 'English_B' 列

运行结果:

   English_A  Math_B  English_B
0        3.0     1.7        5.0
1        2.6     2.5        2.6
2        2.0     3.6        2.4

2.2 通过选择 序号 选择列 df.iloc[ : , : ]

print(df.iloc[:2 , [0,3]])
# 注意,这里的切片没有包含第 2 行!同时选择了 第 0 列 和 第 3 列
# 如果想要 同时选择 0~3 列(共4列),要使用 :4

运行结果:

    name  Math_B
0  Alice     1.7
1    Bob     2.5

2.3 对 特定 列的数据进行逻辑筛选

print(df.loc[df['English_A'] > 2, ['name', 'English_A']])
# 这里我希望查看 'English_A' 这个科目分数 2 分以上有哪些人

运行结果:

    name  English_A
0  Alice        3.0
1    Bob        2.6
4   Ella        3.0
Tags: