在pandas行中搜索字符串

时间:2015-11-15 07:01:41

标签: python string search pandas row

如何在pandas数据框中搜索一个短语的整行,如果存在,则创建一个新的col,其中显示“是”以及它在该行中找到的列中的哪些列?我也希望能够忽略案例。

1 个答案:

答案 0 :(得分:1)

您可以使用Pandas apply函数,它允许您遍历行或列并将自己的函数应用于它们。

例如,给定数据帧

+--------------------------------------+------------+---+
|               deviceid               | devicetype | 1 |
+--------------------------------------+------------+---+
| b569dcb7-4498-4cb4-81be-333a7f89e65f | Google     | 1 |
| 04d3b752-f7a1-42ae-8e8a-9322cda4fd7f | Android    | 2 |
| cf7391c5-a82f-4889-8d9e-0a423f132026 | Android    | 3 |
+--------------------------------------+------------+---+

定义一个函数

def pr(array, value):
    condition = array[array.str.contains(value).fillna(False)].index.tolist()
    if condition:
        ret = array.append(pd.Series({"condition":['Yes'] + condition}))
    else:
        ret = array.append(pd.Series({"condition":['No'] + condition}))
    return ret

使用它

df.apply(pr, axis=1, args=('Google',))

+---+--------------------------------------+------------+---+-------------------+
|   |               deviceid               | devicetype | 1 |     condition     |
+---+--------------------------------------+------------+---+-------------------+
| 0 | b569dcb7-4498-4cb4-81be-333a7f89e65f | Google     | 1 | [Yes, devicetype] |
| 1 | 04d3b752-f7a1-42ae-8e8a-9322cda4fd7f | Android    | 2 | [No]              |
| 2 | cf7391c5-a82f-4889-8d9e-0a423f132026 | Android    | 3 | [No]              |
+---+--------------------------------------+------------+---+-------------------+