我已经创建了一个dataframe列来存储hashtag,该列的每一行都是一个字符串列表,如下所示:
df.hashtag
0 [#MondayMotivation, #BlackMamba, #RIPMamba, #c...
1 [#Periscope, #HeartGang, #SpreadLuv, #KobeRIP,...
2 [#Periscope, #HeartGang, #SpreadLuv, #KobeRIP,...
3 [#RoomOfMystery, #BuenLunes, #GRAMMYs, #27Ene,...
4 [#Periscope, #HeartGang, #SpreadLuv, #KobeRIP,...
5 [#Periscope, #HeartGang, #SpreadLuv, #KobeRIP,...我的意思是,df.hashtag的每一行都是这样的列表:
df.hashtag[0]
['#MondayMotivation',
'#BlackMamba',
'#RIPMamba',
'#coronavirus',
'#love',
'#Califórnia']如您所见,有许多类似的标签表示相同的含义,例如,#COV_19
和#COVID_19,所以我想将这些元素替换为相同的字符串#COVID19
所以我创建了一个格式不正确的标签列表。如下所示:
token = ['#Covid_19',
'#covid2019',
'#covid19',
'#covid_19',
'#COVid',
'#COVID__19']然后我尝试了replace方法,但失败了。
df.replace(token,'#COVID-19',inplace=True)如何将这些标签替换为我想要的字符串?
发布于 2020-09-06 00:20:49
您可以执行以下操作。如果有更多要替换的元素,请添加类似的行。
token = ['#Covid_19',
'#covid2019',
'#covid19',
'#covid_19',
'#COVid',
'#COVID__19']
l=list(df.hashtag)
for i in range(len(l)):
l[i]=['#COVID19' if x in token else x for x in l[i]]
df.hashtag=l发布于 2020-09-06 00:23:18
这是一个解决方案,首先Series.explode,然后创建一个token的字典作为关键字,"#COVID_19"作为replace的值,最后groupby以获取原始数据。
(df.hashtag.explode().replace({t : "#COVID_19" for t in token})
.groupby(level=0).apply(list))发布于 2020-09-06 01:14:06
另一个选择
for t in token:
df['hashtag'] = df['hashtag'].str.replace(t, '#COVID19')另一个建议是,对于令牌列表的这类实例,您可能希望清理数据,例如将所有hashtag大写,删除特殊字符,并将year替换为固定格式。这样,你的令牌列表会更小,循环也会更短。
https://stackoverflow.com/questions/63755940
复制相似问题