pandas筛选包含特定字符的行
在数据处理中,经常需要根据一些特定条件来筛选数据,比如根据一列数据是否包含特定的字符来筛选行。在使用pandas库进行数据处理时,可以很方便地实现这个功能。
准备数据
首先,我们需要准备一些数据作为示例。下面是一个包含名字和年龄的数据集:
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'age': [25, 30, 35, 40, 45]}
df = pd.DataFrame(data)
print(df)
运行以上代码可以得到如下输出:
name age
0 Alice 25
1 Bob 30
2 Charlie 35
3 David 40
4 Eve 45
筛选包含特定字符的行
假设我们想要筛选出名字中包含字符”e”的行,可以使用pandas的str.contains()
方法。
filtered_df = df[df['name'].str.contains('e', case=False)]
print(filtered_df)
上述代码中的str.contains('e', case=False)
表示筛选出名字列中包含小写的’e’字符的行,case=False
参数表示忽略大小写。
运行以上代码可以得到如下输出:
name age
0 Alice 25
4 Eve 45
可以看到,只有名字中包含’e’的行被筛选出来了。
匹配整个单词
有时候我们可能需要精确匹配整个单词,而不是部分匹配。这时可以使用正则表达式来实现。
filtered_df = df[df['name'].str.contains(r'\bEve\b', case=False, regex=True)]
print(filtered_df)
上述代码中的r'\bEve\b'
表示匹配整个单词”Eve”,\b
表示单词边界。regex=True
参数表示使用正则表达式进行匹配。
运行以上代码可以得到如下输出:
name age
4 Eve 45
可以看到,只有名字为”Eve”的行被筛选出来了。
结语
通过使用str.contains()
方法,我们可以很方便地筛选出包含特定字符的行,同时也可以使用正则表达式来实现更加精确的匹配。这对于数据处理和分析非常有用。