python - Python替换csv文件中的字符串
问题描述
我想在实现 remove_pattern 函数的现有 .csv 文件中添加一个新列 tidy_tweet
def remove_pattern(input_txt, pattern):
r = re.findall(pattern, input_txt)
for i in r:
input_txt = re.sub(i, '', input_txt)
return input_txt
我写了这几行代码
data = pd.read_csv(filepath_or_buffer='stockerbot-export.csv', error_bad_lines=False)
data['tidy_tweet'] = np.vectorize(remove_pattern)(data['text'], "@[\w]*")
我收到以下错误
MemoryError Traceback (most recent call last)
<ipython-input-15-d6e7e950d5b9> in <module>()
----> 1 data['tidy_tweet'] = np.vectorize(remove_pattern)(data['text'], "@[\w]*")
~\Anaconda3\lib\site-packages\numpy\lib\function_base.py in __call__(self, *args, **kwargs)
1970 vargs.extend([kwargs[_n] for _n in names])
1971
-> 1972 return self._vectorize_call(func=func, args=vargs)
1973
1974 def _get_ufunc_and_otypes(self, func, args):
~\Anaconda3\lib\site-packages\numpy\lib\function_base.py in _vectorize_call(self, func, args)
2049
2050 if ufunc.nout == 1:
-> 2051 res = array(outputs, copy=False, subok=True, dtype=otypes[0])
2052 else:
2053 res = tuple([array(x, copy=False, subok=True, dtype=t)
MemoryError:
我无法理解错误。需要帮忙。
解决方案
该错误是不言自明的,您正在处理大量数据并对其进行循环时内存不足。有一个更简单的解决方案试试看。
data['tidy_tweet'] = data['text'].str.replace('@[\w]*', '',regex=True)
regex=True
如果您使用的是旧版本的熊猫,请删除 ,即早于0.23.0
例子:
推荐阅读
- java - 将数据从编辑文本传递到 Java 对象,
- javascript - 您将如何处理用户在 {prefix}reddit {subreddit} 中输入的位置(然后从该 subreddit 回复随机图像)
- jquery - 为什么我的成功功能被跳过?
- wordpress - 如何使用单选按钮更新结帐购物车以不征税?
- python-3.x - 如何在给定的网址(网站)上检查是否需要登录天气才能继续
- univocity - Univocity - 将单行解析为多个 bean
- javascript - 匹配字符串中的正则表达式
- android-studio - 在 Android Studio 导航编辑器中保持导航图定位
- java - 攻击弱 PRNG Math.round(Math.random() * 30D)
- django - TypeError 在 ArrayField 上的 django inspectdb 中缺少“base_field”