2017-08-24 45 views
1

我有一個數據幀,其中包含名稱,我試圖結合相似的名稱。例如:熊貓過濾器/結合相似的字符串值

| name  | foo_val | 
| --------- | ------- | 
| Andrew | 2  | 
| Braden | 1  | 
| Cheryl | 4  | 
| Cheryl :D | 1  | 
| Christian | 1  | 
| Derrick | 2  | 
| Derrick L | 2  | 

...

等...在那裏我會要合併的行(和foo_val的值);如果內容(如謝麗爾和德里克在上面很相似例如),所以它看起來像下面這樣:

| name  | foo_val | 
| --------- | ------- | 
| Andrew | 2  | 
| Braden | 1  | 
| Cheryl | 5  | 
| Christian | 1  | 
| Derrick | 4  | 

我不知道大熊貓以及我想,但我已經在duplicated(如df.duplicated('name'))和groupby看了以及merge但我很確定這些不是我想要什麼(很可能是錯的......)。在那個筆記上,我搜索了很多,但假設之前已經詢問過,所以如果我錯過了它們,請指出其他問題/答案...

我可以想象一種在純Python與迭代,但很想知道這是否可能在熊貓...

+1

這個問題的真正訣竅是定義什麼算作一個類似的名字。 – Alter

+0

是的,我明白了! –

回答

1

在您發佈的示例中,您需要groupby字符串的第一部分並結合結果。這可以使用

df.groupby(df.name.str.split().str[0]).foo_val.sum().reset_index() 


    name  foo_val 
0 Andrew  2 
1 Braden  1 
2 Cheryl  5 
3 Christian 1 
4 Derrick  4 
+0

,完美的作品!我有一個偷偷的懷疑,groupby可能會做的伎倆,猜測我需要更深入探索!謝謝! –

+0

很高興它的工作,並感謝您接受:) – Vaishali

+1

只是一個筆記。我懷疑可能會有很多名稱中有空格,並通過nltk的名稱語料庫進行搜索......結果並不多。 – Alter