Python 应用文本数据的更快替代方案

Python 应用文本数据的更快替代方案,python,string,pandas,Python,String,Pandas,我有一个熊猫数据框,两列“文本”和“状态”: 大约有6000行 文本字段由短句组成。我做了一个测试 dataset["text"] = dataset["text"].apply(strip_punctuation) 其中,strip\u标点符号执行一些字符串操作并返回一个字符串。函数对字符串的处理速度很快,但当我把它放到apply中时,结果是一场灾难,我不知道为什么 感谢您的帮助 DataFrame.apply基本上是对整个DataFrame进行顺序扫描,并将函数应用于每一行。如果您的数据帧

我有一个熊猫数据框,两列“文本”和“状态”:

大约有6000行

文本字段由短句组成。我做了一个测试

dataset["text"] = dataset["text"].apply(strip_punctuation)

其中,
strip\u标点符号
执行一些字符串操作并返回一个字符串。函数对字符串的处理速度很快,但当我把它放到apply中时,结果是一场灾难,我不知道为什么


感谢您的帮助

DataFrame.apply
基本上是对整个
DataFrame
进行顺序扫描,并将函数应用于每一行。如果您的
数据帧很大,则速度会非常慢

使用像下面这样的矢量化方法可以提高性能,但您可以在更复杂/功能更少的情况下进行权衡

df['text'] = df['text'].str.replace('someregextoremovepunctuation','')

DataFrame.apply
基本上是对整个
DataFrame
进行顺序扫描,并将函数应用于每一行。如果您的
数据帧很大,则速度会非常慢

使用像下面这样的矢量化方法可以提高性能,但您可以在更复杂/功能更少的情况下进行权衡

df['text'] = df['text'].str.replace('someregextoremovepunctuation','')

@梅林,我在用手机,不是一台正在努力格式化的电脑;)你所说的结果是灾难是什么意思?“函数快速处理字符串”显然这不是真的。请尝试dataset[“text”]=map(带标点符号,dataset[“text”])@dogacanb内置的map函数应该能够并行执行该操作。熊猫因缺乏并行性而臭名昭著。@Merlin,我在用手机,不是一台正在努力格式化的电脑;)你所说的结果是灾难是什么意思?“函数快速处理字符串”显然这不是真的。请尝试dataset[“text”]=map(带标点符号,dataset[“text”])@dogacanb内置的map函数应该能够并行执行该操作。Pandas因缺乏并行性而臭名昭著。问题是,函数不仅仅是一个正则表达式操作,它有一系列正则表达式替换、拆分…@dogacanb,但您应该能够将其重写为单个正则表达式。当然,没有代码很难说……它也调用其他函数。我先把句子小写,去掉一些标点,然后做词干分析。我不能用正则表达式来阻止:)好吧,问题是函数不仅仅是一个正则表达式操作,它有一系列正则表达式替换、拆分…@dogacanb,但你应该能够将其重写为一个正则表达式。当然,没有代码很难说……它也调用其他函数。我先把句子小写,去掉一些标点,然后做词干分析。我不能用正则表达式来阻止:)