计算数据框列中的位数

Max*_*ade 0 python pandas

我有一个 email_alias 列,我想使用 Python 在另一列中查找该列(每行)中的整数数。到目前为止,我只能计算整个列中的数字总数。

试图

我试过: df['count_numbers'] = sum(c.isdigit() for c in df['email_alias'])

示例

email_alias       count_numbers
thisisatest111      3
testnumber2         1
Run Code Online (Sandbox Code Playgroud)

小智 8

我相信这可能是最简单的解决方案。

df['count_numbers'] = df['email_alias'].str.count('\d')
Run Code Online (Sandbox Code Playgroud)


rog*_*osh 5

您可以apply为该列自定义 python 函数。我不认为有一种矢量化的方式。sum()这里利用了bool 是 int 的子类的事实,因此所有True值都等于1.

import pandas as pd

def count_digits(string):
    return sum(item.isdigit() for item in string)

df = pd.DataFrame({'a': ['thisisatest111', 'testnumber2']})
df['counts'] = df['a'].apply(count_digits)
Run Code Online (Sandbox Code Playgroud)

你的方法:

df['count_numbers'] = sum(c.isdigit() for c in df['email_alias']) 
Run Code Online (Sandbox Code Playgroud)

无法工作,因为df['count_numbers'] =对该列中每个值的赋值。在这里,apply隐式迭代行(但在 Python 时间,所以它不是矢量化的)。再说一次,.strPandas 的大多数访问器方法也是如此,尽管语法表明它比for循环更快。