从一系列文字中提取表情符号

问题描述

我在从系列中提取表情符号时遇到问题。 使用的代码

import emoji
def extract_emojis(text):
  return ''.join(c for c in text if c in emoji.UNICODE_EMOJI)

for text in df['comments']:
    df['emoji']=extract_emojis(text)

输出

             comments                                    | emoji
0     Its very beautiful    
1   Your new bike,@keir ...?   
2   @philip ??    
3   Any news on the Canadian expansion mentioned i...   
4   Rocky Mountain ❤️   
... ... ...

仅检查文本上的功能

text = '@philip ??'
extract_emojis(text)
--> '\U0001f929\U0001f929'        

预期结果:

             comments                                    | emoji
0     Its very beautiful                                 |
1   Your new bike,@keir ...?                            |
2   @philip ??                                         | ??
3   Any news on the Canadian expansion mentioned i...    |
4   Rocky Mountain ❤️                                    | ❤️ 
... ... ...

注意: 在查看以下链接后,我才问了这个问题:
Python unicode character conversion for Emoji
How to extract all the emojis from text?

解决方法

而不是遍历整个数据集。您可以使用applylambda应用该功能。

import pandas as pd 
import emoji
df = pd.DataFrame([['@philip ?? '],['Rocky Mountain ❤️']],columns = ['comments'])

使用Lambda:

df['emojis'] = df['comments'].apply(lambda row: ''.join(c for c in row if c in emoji.UNICODE_EMOJI))
df

使用“应用”

def extract_emojis(text):
    return ''.join(c for c in text if c in emoji.UNICODE_EMOJI)

df['emoji_apply'] = df['comments'].apply(extract_emojis)
df

输出:

comments    emojis
@philip ??    ??
Rocky Mountain ❤️   ❤