检查单元格是否包含字母的最快方法是什么?

时间:2019-05-07 11:48:17

标签: python pandas contains

我有一个包含260万行的数据集,其中有一个名为msgText的列,其中包含书面消息。

现在,我想过滤掉所有不包含字母的邮件。为此,我找到了以下代码:

dataset = dataset[dataset['msgText'].astype(str).str.contains('[A-Za-z]')]

但是,在16小时之后,代码仍在运行。

此外,基于Does Python have a string 'contains' substring method?,我考虑创建一个长度为26的列表,该列表包含字母表中的所有字母,然后检查每个单元格是否包含该字母。但这似乎也不有效。

因此,我想知道是否有更快的方法来查找单元格是否包含字母。


编辑:上面的代码运行良好。显然,我在(慢速)代码中的内容是:dataset['msgText'] = dataset[dataset['msgText'].astype(str).str.contains('[A-Za-z]')]

2 个答案:

答案 0 :(得分:2)

import pandas

dataset['columnName'].apply(lambda x: x.find('\\w') > 0)

答案 1 :(得分:1)

您可以使用numpy的isalpha()方法。 (据估计,脾气要比熊猫快)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyle"
        android:layout_centerInParent="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />


</RelativeLayout>

会返回:

df = pd.DataFrame({'msgText': ['a', 'b', 'g', '1']})
column = df['msgText']
column[column.str.replace(' ','').str.isalpha()]

具有260万行的测试用例:

导入日期时间

0    a
1    b
2    g
Name: msgText, dtype: object