尝试从文本中提取表情符号时出现空白列

Getting a blank column when trying to extract emojis from text

我想从一个句子中提取表情符号并将它们添加到一个新列中,但是当我这样做时,新列什么也没有,表情符号仍然在句子中。

作为参考,我的数据集如下所示 - 但包含 70,000 多个与此类似的句子:

一句话
你看起来不错
爱你❤️
今天好开心

到目前为止,我已经尝试了方法:

import pandas as pd 
import emoji

df['emojis'] = df['Sentence'].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['emojis'] = df['Sentence'].apply(extract_emojis)
df

然而,当我尝试它们时,我的最终输出似乎是这样的:

一句话 表情符号
你看起来不错
爱你❤️
今天好开心

因此,我希望输出如下所示:

一句话 表情符号
你看起来不错
爱你 ❤️
今天好开心

除此之外,我还尝试了方法,这正是我想要做的:

import pandas as pd
import emoji as emj

def extract_emoji(df):
    df["emoji"] = ""
    for index, row in df.iterrows():
        for emoji in EMOJIS:
            if emoji in row["Sentence"]:
                row["Sentence"] = row["Sentence"].replace(emoji, "")
                row["emoji"] += emoji

extract_emoji(df)
print(df.to_string())

不过,使用上面的方法,代码似乎没有完全执行,我认为它无法处理数据集中的这么多行;因此,我有超过70,000个句子需要提取表情符号。

如你所见,我快到了,但还不完全。

这三种方法对我来说都没有完全奏效,我需要一些额外的帮助。

总而言之,我只想从每个句子中提取表情符号并将它们添加到一个新列中 - 如果可能的话。

非常感谢。

尝试:

import re
import emoji

pattern = re.compile(r"|".join(map(re.escape, emoji.UNICODE_EMOJI["en"])))

df["Emojis"] = df["Sentence"].apply(lambda x: "".join(pattern.findall(x)))
df["Sentence"] = df["Sentence"].apply(lambda x: pattern.sub("", x))
print(df)

打印:

               Sentence  Emojis
0        You look  good      
1              Love you      ❤️
2   I am so happy today