Python 熊猫过滤/组合相似的字符串值

Python 熊猫过滤/组合相似的字符串值,python,pandas,Python,Pandas,我有一个包含名称的数据框,我正在尝试组合相似的名称。例如: | name | foo_val | | --------- | ------- | | Andrew | 2 | | Braden | 1 | | Cheryl | 4 | | Cheryl :D | 1 | | Christian | 1 | | Derrick | 2 | | Derrick L | 2 | 等等

我有一个包含名称的数据框,我正在尝试组合相似的名称。例如:

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

等等。。。如果内容足够相似(如上例中的Cheryl和Derrick),我希望合并行(和foo_val的值),因此如下所示:

| name      | foo_val |
| --------- | ------- |
| Andrew    | 2       |
| Braden    | 1       |
| Cheryl    | 5       |
| Christian | 1       |
| Derrick   | 4       |
我还不太了解熊猫,但我已经看过了
复制的
(如
df.duplicated('name')
)和
groupby
以及
merge
,但我很确定这些不是我想要的(很可能是错误的…)。在这一点上,我搜索了很多,但假设这是以前问过的,所以如果我错过了,请指出其他问题/答案


我可以想象一种在纯Python中通过迭代实现这一点的方法,但我很想知道在Pandas中是否可以实现这一点…

在您发布的示例中,您需要按字符串的第一部分分组并合并结果。这可以通过使用

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

这个问题的真正诀窍是定义什么是相似的名字。是的,我明白了!那太好了!我暗自怀疑groupby可能会玩这个把戏,我想我还需要深入研究一下!非常感谢。只是一张纸条。我怀疑可能有很多名字里面都有空格,于是通过nltk的名字语料库进行了搜索。。。事实证明并没有太多的数据。不过,我完全同意解决这个问题完全取决于数据的质量。这就是我开始的原因,在你上面发布的例子中。。。。