首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将pandas列中的元素替换为字符串列表

如何将pandas列中的元素替换为字符串列表
EN

Stack Overflow用户
提问于 2020-09-06 00:06:28
回答 3查看 88关注 0票数 1

我已经创建了一个dataframe列来存储hashtag,该列的每一行都是一个字符串列表,如下所示:

代码语言:javascript
复制
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的每一行都是这样的列表:

代码语言:javascript
复制
df.hashtag[0]

['#MondayMotivation',
 '#BlackMamba',
 '#RIPMamba',
 '#coronavirus',
 '#love',
 '#Califórnia']

如您所见,有许多类似的标签表示相同的含义,例如,#COV_19

#COVID_19,所以我想将这些元素替换为相同的字符串#COVID19

所以我创建了一个格式不正确的标签列表。如下所示:

代码语言:javascript
复制
token = ['#Covid_19',
 '#covid2019',
 '#covid19',
 '#covid_19',
 '#COVid',
 '#COVID__19']

然后我尝试了replace方法,但失败了。

代码语言:javascript
复制
df.replace(token,'#COVID-19',inplace=True)

如何将这些标签替换为我想要的字符串?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-09-06 00:20:49

您可以执行以下操作。如果有更多要替换的元素,请添加类似的行。

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2020-09-06 00:23:18

这是一个解决方案,首先Series.explode,然后创建一个token的字典作为关键字,"#COVID_19"作为replace的值,最后groupby以获取原始数据。

代码语言:javascript
复制
(df.hashtag.explode().replace({t : "#COVID_19" for t in token})
        .groupby(level=0).apply(list))
票数 1
EN

Stack Overflow用户

发布于 2020-09-06 01:14:06

另一个选择

代码语言:javascript
复制
for t in token:
    df['hashtag'] = df['hashtag'].str.replace(t, '#COVID19')

另一个建议是,对于令牌列表的这类实例,您可能希望清理数据,例如将所有hashtag大写,删除特殊字符,并将year替换为固定格式。这样,你的令牌列表会更小,循环也会更短。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63755940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档