我正在使用这种数据帧
num person cash
0 1 personone 29
1 1 persontwo 81
2 1 personone: 17
3 1 personone 75
4 1 personone and persontwo 62
5 1 personone's friend 55
我使用以下代码根据字符串向量过滤数据帧
people = ["personone", "persontwo"]
pattern = r"\b{}\b".format("|".join(people))
df[df["person"].str.match(pattern)]
问题是代码产生的内容比我需要的要多。当我检查df["person"].unique()
时,它会给我一个数组:
array(["personone", "persontwo", "personone:", "personone ", "personone and persontwo", "personone's friend"], dtype=object)
尽管我使用了单词bounders\b
我想要实现的结果是:将personone
、personone:
和personone
组合起来(最后一个在末尾有空格)。并生产以下产品:
num person cash
0 1 personone 121
1 1 persontwo 81
也就是说,将personone
的三个变体组合起来,并忽略其所有其他外观。personone
的cash
是29+17+75=121的和
你的问题并不完全清楚。例如,为什么要删除案例
personone and persontwo
无论如何,一种方法是创建一个
flag
变量来标记良好的观察结果,例如然后你简单地求和
一个选项是匹配可选的
\W
而不是\b
,并强制开始和结束字符串:输出:
您可以使用
^
和$
来限制匹配:相关问题 更多 >
编程相关推荐