题
我有一个 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)
您可以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循环更快。