计算数据框列中的位数

时间:2019-03-19 20:20:07

标签: 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

2 个答案:

答案 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')