[python]Dataframe对象各种筛选的方法

269 阅读2分钟

在Python中,Pandas库提供了一个非常强大的DataFrame对象,用于处理和分析结构化数据。

对DataFrame进行筛选是数据处理中常见的任务,Pandas提供了多种方式进行筛选。

以下是一些常用的筛选方法:

1. 使用布尔索引(条件筛选)

这是最常见的筛选方式,通过条件表达式直接生成布尔索引(True/False)来筛选DataFrame中满足条件的行。


import pandas as pd  
  
# 示例DataFrame  
df = pd.DataFrame({  
    'A': [1, 2, 3, 4],  
    'B': [5, 6, 7, 8],  
    'C': [9, 10, 11, 12]  
})  
  
print(df)

# 筛选列'A'大于2的行  
filtered_df = df[    df['A'] > 2   ]  

print(filtered_df)

2. 使用query()方法

query()方法允许你以【字符串形式】提供表达式来筛选数据,这在表达式比较复杂或动态生成时特别有用。


# 使用query方法筛选  
filtered_df = df.query('A > 2')  

print(filtered_df)

3. 使用isin()方法

isin()方法允许你基于一个列表(或序列)中的值来筛选DataFrame的行。


# 筛选列'A'值在[2, 4]中的行  
filtered_df = df[  df['A'].isin([2, 4])   ]  

print(filtered_df)

4. 使用loc和iloc

loc方法通过标签来选择数据。它主要基于标签进行索引,也支持布尔数组。 iloc方法通过整数位置来选择数据。

# 使用loc方法(基于标签)  
filtered_df = df.loc[df['A'] > 2]  
  
# 使用iloc方法(基于位置,这里假设我们知道哪些行满足条件)  
# 例如,如果前两行满足条件  

filtered_df_by_position = df.iloc[:2]  # 注意:这里只是一个示例,实际上应使用条件表达式结合iloc的某种方式来获取位置

注意:直接使用iloc进行筛选通常需要先知道哪些行满足条件,这通常不是iloc的直接用途。然而,结合其他操作(如找到满足条件的行的索引),iloc可以用来筛选DataFrame。

5. 链式条件筛选

可以通过将多个条件用&(逻辑与)和|(逻辑或)连接起来进行链式筛选。


# 筛选列'A'大于2且列'B'小于8的行  
filtered_df = df[   (df['A'] > 2) & (df['B'] < 8)   ]  

print(filtered_df)

这些方法为Pandas DataFrame的筛选提供了极大的灵活性和强大的功能。根据你的具体需求,你可以选择最适合你场景的方法来筛选数据。