如何计算Pandas中的特殊字符?

cyvaqqii  于 2023-08-01  发布在  其他
关注(0)|答案(2)|浏览(105)

我试图得到计数的特殊字符列使用Pandas。但没有得到期望的输出。

我的.txt文件是

str
Aa
Bb
?? ?
###

字符串

我的代码是

import pandas as pd

df=pd.read_csv('inn.txt',sep='\t')

def count_special_char(string):
    special_char = 0

    for i in range(len(string)):
        if(string[i].isalpha()):
            continue
        else:
            special_char = special_char + 1

df["new"]=df.apply(count_special_char, axis = 0)
print(df)

输出为:

str  new
0    Aa  NaN
1    Bb  NaN
2  ?? ?  NaN
3   ###  NaN

所需输出为

str  new
0    Aa  NaN
1    Bb  NaN
2  ?? ?  4
3   ###  3


怎么办?

vybvopom

vybvopom1#

你可以在一行中这样做:

df["new"] = df["str"].apply(lambda p: sum( not q.isalpha() for q in p )))

字符串
如果你使用apply over dataframe,你必须访问你想要的列,并告诉apply遍历行,如下所示:

df["new"] = df.apply(lambda p: sum( not q.isalpha() for q in p["str"] ), axis=1)

ruyhziif

ruyhziif2#

让我们尝试使用np.where代替循环:

import string
df['new']=np.where(~df['str'].str.contains('|'.join(list(string.ascii_letters)))
                   ,df['str'].str.len(),np.nan)
print(df)

个字符

相关问题