我正在尝试使用命令清除额外空白数据框中的列。数据框有近800万条记录
datt2.My_variable=datt2.My_variable.str.replace('\s+', ' ')
我最终得到以下错误
MemoryError Traceback (most recent call last)
<ipython-input-10-158a51cfaa3d> in <module>()
----> 1 datt2.My_variable=datt2.My_variable.str.replace('\s+', ' ')
c:\python27\lib\site-packages\pandas\core\strings.pyc in replace(self, pat, repl, n, case, flags)
1504 def replace(self, pat, repl, n=-1, case=True, flags=0):
1505 result = str_replace(self._data, pat, repl, n=n, case=case,
-> 1506 flags=flags)
1507 return self._wrap_result(result)
1508
c:\python27\lib\site-packages\pandas\core\strings.pyc in str_replace(arr, pat, repl, n, case, flags)
334 f = lambda x: x.replace(pat, repl, n)
335
--> 336 return _na_map(f, arr)
337
338
c:\python27\lib\site-packages\pandas\core\strings.pyc in _na_map(f, arr, na_result, dtype)
152 def _na_map(f, arr, na_result=np.nan, dtype=object):
153 # should really _check_ for NA
--> 154 return _map(f, arr, na_mask=True, na_value=na_result, dtype=dtype)
155
156
c:\python27\lib\site-packages\pandas\core\strings.pyc in _map(f, arr, na_mask, na_value, dtype)
167 try:
168 convert = not all(mask)
--> 169 result = lib.map_infer_mask(arr, f, mask.view(np.uint8), convert)
170 except (TypeError, AttributeError):
171
pandas\src\inference.pyx in pandas.lib.map_infer_mask (pandas\lib.c:65837)()
pandas\src\inference.pyx in pandas.lib.maybe_convert_objects (pandas\lib.c:56806)()
MemoryError:
答案 0 :(得分:0)
问题:我正在尝试清除额外空白数据框中的列 ...
datt2.My_variable=datt2.My_variable.str.replace('\s+', ' ')
请发表评论,我是否理解您的expression
?
pandas Column Column DataSeries
DataFrame Name DataSeries Methode
|-^-| |----^-----| |-------^-------| |----------^----------|
datt2 .My_variable = datt2.My_variable .str.replace('\s+', ' ')
我非常确定使用re.sub
与使用pandas.str.replace(...)
相同,但不复制整个column
数据。
来自
pandas
doc:
Series.str.replace(pat,repl,n = -1,case = True,flags = 0)
用一些其他字符串替换Series / Index中pattern / regex的出现次数 相当于str.replace()或re.sub()。
尝试纯python
,例如:
import re
for idx in df.index:
df.loc[idx, 'My_variable'] = re.sub('\s\s+', ' ', df.loc[idx, 'My_variable'])
注意:请考虑使用&#39; \ s \ s +&#39; 而不是&#39; \ s +&#39;。<登记/> 使用&#39; \ s +&#39;将 ONE BLANK 替换为 ONE BLANK ,这是无用的。
使用Python测试:3.4.2 - pandas:0.19.2
如果这对您有用,请回来并将您的问题标记为已回答,或者为什么不对其进行评论。