在python中计算不同的名称

时间:2017-02-03 06:29:03

标签: python pandas

我有一个文件,想要计算几个名字。问题是其中一个名字,我有多个名字!我能把他们算作一个名字,而不是不同的名字? 例如: LR = lrr = LRr = lrrs它们都是一样的但是当我想要计算它们时它们会假设为不同的名称。

谢谢

1 个答案:

答案 0 :(得分:0)

这并不容易。并简化了解决方案 - 首先read_csv,然后将所有字母转换为lower,然后将replace从字符串末尾的一个或多个s转换为空字符串。然后删除重复项 - 稍微修改一下solution(仅替换为一个字母)。最后value_counts

因此,如果需要以s结尾的某些词语也会被替换。

df = pd.read_csv('file.csv')

#sample DataFrame
df = pd.DataFrame({'names': ['LR','lrr','LRr','lrrs', 'lrss', 'lrsss']})
print (df)
   names
0     LR
1    lrr
2    LRr
3   lrrs
4   lrss
5  lrsss

print (df.names.str.lower().str.replace('s{1,}$','').str.replace(r'(.)\1+', r'\1'))
0    lr
1    lr
2    lr
3    lr
4    lr
5    lr
Name: names, dtype: object


print (df.names.str.lower()
               .str.replace('s{1,}$','')
               .str.replace(r'(.)\1+', r'\1')
               .value_counts())
lr    6
Name: names, dtype: int64