2017-08-24 47 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