【发布时间】:2016-10-19 03:40:15
【问题描述】:
我有一个带有字符串值的 pandas 数据框,我希望能够返回数据框的子集,其中值包含一些子字符串。以这种方式在系列中很容易做到这一点(示例改编自 pandas 文档):
import pandas as pd
import numpy as np
s4 = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca', np.nan, 'CABA', 'dog', 'cat'])
s4[s4.str.contains('A', na=False)]
0 A
3 Aaba
6 CABA
dtype: object
我希望在数据帧的所有列中搜索子字符串的工作方式与搜索系列相同,但数据帧没有 .str 方法。您可以过滤数据框以获取完全匹配的字符串,如下所示:
df = pd.concat((s4, s4.shift(1)), axis=1)
0 1
0 A NaN
1 B A
2 C B
3 Aaba C
4 Baca Aaba
5 NaN Baca
6 CABA NaN
7 dog CABA
8 cat dog
filtered_df = df[df == 'Baca']
0 1
0 NaN NaN
1 NaN NaN
2 NaN NaN
3 NaN NaN
4 Baca NaN
5 NaN Baca
6 NaN NaN
7 NaN NaN
8 NaN NaN
result = df[df contains 'ac']
我希望它会返回与filtered_df = df[df == 'Baca'] 相同的内容,但它的语法无效。我尝试使用 df.apply 将 series.str.contains 方法应用于数据帧的每个系列。如果这是一个可行的解决方案,我无法解决。我在 Linux/Ubuntu 上使用 python 3.5 和 pandas 0.18。
【问题讨论】:
标签: python string pandas dataframe contains