问题
我有一个email_alias列,我想使用Python在另一列中找到该列(每行)中整数的数量。到目前为止,我只能计算整列中的总数。
尝试
我尝试过:df['count_numbers'] = sum(c.isdigit() for c in df['email_alias'])
示例:
email_alias count_numbers
thisisatest111 3
testnumber2 1
答案 0 :(得分:1)
您可以apply
自定义python函数到列。我认为没有向量化的方式。 pdf(paste0("Plot", "_Test.pdf"), height =8, width=16)
#for(i in seq(1,length(plotlist))){
plotname<-plotlist[i]
plotter<-eval(parse(text=plotname))
plotter
print(plotname)
#}
dev.off()
在这里利用了bools are a subclass of ints这样的事实,因此所有sum()
的值都等于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)
无法工作,因为df['count_numbers'] = sum(c.isdigit() for c in df['email_alias'])
是对该列中每个值的分配。在这里,df['count_numbers'] =
隐式地对行进行迭代(但是在Python时间中,因此未进行向量化)。再说一次,尽管语法表明Pandas的大多数apply
访问器方法也比.str
循环快。
答案 1 :(得分:1)
我相信这可能是最简单的解决方案。
df['count_numbers'] = df['email_alias'].str.count('\d')