2017-02-03 56 views
0

我有一個文件,並希望計數幾個名字。問題在於其中一個名字,我有不止一個名字!我能做些什麼來統計他們作爲一個名字而不是不同的名字? 例如: LR = lrr = LRr = lrs他們都是一樣的東西,但是當我想對它們進行計數時,它們會假設爲不同的名稱。在python中計算不同的名字

謝謝

+0

請閱讀[問]並提供[mcve]。 – MYGz

回答

0

這並不容易。解決辦法是簡化 - 首先read_csv,然後將所有字母轉換爲lower,然後將replace一個或多個s從字符串結尾轉換爲空字符串。然後刪除重複 - 有點修改此solution(只替換爲一個字母)。 Last 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