尝试从文本中提取表情符号时出现空白列
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
我想从一个句子中提取表情符号并将它们添加到一个新列中,但是当我这样做时,新列什么也没有,表情符号仍然在句子中。
作为参考,我的数据集如下所示 - 但包含 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