首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在序列中字符串中的每个字之前和后面添加冒号的有效方法

在序列中字符串中的每个字之前和后面添加冒号的有效方法
EN

Code Review用户
提问于 2019-04-16 16:56:22
回答 1查看 306关注 0票数 1

我正在处理twitter的数据,并从这些数据中提取每个表情符号。但是,当我通过CountVectorizer传递数据时,从字符串中减去的冒号。因此,字符串表情符号:ok_hand: :thumbs_up:变成了ok_hand thumbs_up。我想重新添加这些结肠,这样我就可以把它们表情化了。我设法做到了,但我确信我的方法效率很低。表情符号是系数DataFrame的索引,如下所示:

代码语言:javascript
运行
复制
    index              coef

ok_hand thumbs_up      0.4
    airplane           0.2

所以我做的是:

代码语言:javascript
运行
复制
to_emojize=pd.Series(coef_mat_emoji.index)
to_emojize=to_emojize.apply(lambda x: x.split())
to_emojize=to_emojize.apply(lambda x:[':'+i+':' for i in x])
to_emojize=to_emojize.apply(lambda x: emoji.emojize(x, use_aliases=True))
coef_mat_emoji.index=to_emojize

有更好的方法吗?

EN

回答 1

Code Review用户

回答已采纳

发布于 2019-04-17 09:21:32

pandas.Seriespandas.Index都有向量化的字符串添加。你可以这样做:

代码语言:javascript
运行
复制
to_emojize = pd.Series(":" + coef_mat_emoji.index + ":")
coef_mat_emoji.index = to_emojize.apply(emoji.emojize, use_aliases=True)

请注意,pandas.Series.apply将任何附加的关键字参数传递给函数,因此这里根本不需要lambda

这将从第一个加法中创建一个中间系列,这可能不是最有效的内存方法。但是它是最简单和最易读的,所以除非你用这个耗尽内存,否则这就是我要用的。

或者,您可以将其全部放入一个apply调用中(Python 3.6+表示f-strings):

代码语言:javascript
运行
复制
coef_mat_emoji.index = pd.Series(coef_mat_emoji.index).apply(
                        lambda x: emoji.emojize(f":{x}:", use_aliases=True))

你必须用你的实际数据来计时,看看这是否更快。无论如何,对emoji.emojize的呼吁可能会占主导地位。

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

https://codereview.stackexchange.com/questions/217565

复制
相关文章

相似问题

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