我有一个超过1,500万行的df,DataFrame可以用正则表达式清理数据。太慢了..。我怎样才能加快速度?
我做了这样的事:
splitters = str.maketrans(' ,()/-', '......')
n=0
for i in lev1['listing_price']:
n+=1
listing_price = i.replace('£', '').replace('\n', '').translate(
splitters).split('.')
pw_pcm_list = []
price_list = []
for c in listing_price:
pw_pcm = re.sub('\d', '', c)
pw_pcm_list.append(pw_pcm)
price = re.sub('[a-zA-Z]', '', c)
price_list.append(price)
price_list = list(filter(lambda a: a != '', price_list))
price_list = [int(p) for p in price_list]
price_list = [np.mean(price_list)]
pw_pcm_list = list(filter(lambda a: a != '', pw_pcm_list))
list_ = price_list + pw_pcm_list
if list_[1] == 'pw':
price_pcm = int(list_[0] / 7 * 30)
else:
price_pcm = list_[0]
lev1.loc[i, 'listing_price'] = price_pcm
print(n)这就是系列的外观(左)和期望的输出(右)。
£110pw 471.42
£320pcm 320
£400 pcm 400
£400 pcm 400
£320pcm 320
£110pw 471.42发布于 2019-02-27 18:42:43
我只将for循环应用于唯一值,然后使用map函数,从而加快了速度。
new_value_dict = {}
for i in df['column'].unique():
#some data manipulations
new_value = ....
new_value_dict.update ({i:new_value})
df['column']=df['column'].map({i: new_value_dict})https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.unique.html
https://stackoverflow.com/questions/54910290
复制相似问题