我正在尝试将数据帧中的列与子字符串列表中的一个匹配。你知道吗
例如,取具有以下值的列(strings
):
text1C1
text2A
text2
text4
text4B
text4A3
并创建一个新列,该列已将它们与以下子字符串匹配:
vals = ['text1', 'text2', 'text3', 'text4', 'text4B']
我目前拥有的代码可以工作,但它似乎是解决问题的一种非常低效的方法。你知道吗
df = pd.DataFrame({'strings': ['text1C1', 'text2A', 'text2', 'text4', 'text4B', 'text4A3']})
for v in vals:
df.loc[df[df['strings'].str.contains(v)].index, 'matched strings'] = v
这将返回以下数据帧,这正是我所需要的。你知道吗
strings matched strings
0 text1C1 text1
1 text2A text2
2 text2 text2
3 text4 text4
4 text4B text4B
5 text4A3 text4
有没有更有效的方法,特别是对于更大的数据帧(10k+行)?你知道吗
我想不出如何处理vals
的其中一个项同时也是另一个的子串(text4
是text4B
的子串)
将生成器与
next
一起用作匹配第一个值:更一般的解决方案,如果可能的话,没有匹配的值与
iter
和默认参数next
:应改进您的解决方案:
相关问题 更多 >
编程相关推荐