Je voudrais changer toutes les lignes avec seulement des emojis tels que df['Comments'][2] en N / A.

df['Comments'][:6]
0                                                          nice
1                                                       Insane3
2                                                          😻😻❤️
3                                                @bertelsen1986
4                       20 or 30 mm rise on the Renthal Fatbar?
5                                     Luckily I have one to 🔥💪🏻

Le code suivant ne renvoie pas la sortie que j'attends:

df['Comments'].replace(';', ':', '!', '*', np.NaN)

Production attendue:

df['Comments'][:6]
0                                                          nice
1                                                       Insane3
2                                                          nan
3                                                @bertelsen1986
4                       20 or 30 mm rise on the Renthal Fatbar?
5                                     Luckily I have one to 🔥💪🏻
1
Luc 30 août 2020 à 13:29

2 réponses

Meilleure réponse

Fonction (remove_emoji) référence https://stackoverflow.com/a/61839832/6075699

Essayez
Installez d'abord la emoji lib - pip install emoji

import re
import emoji

df.Comments.apply(lambda x: x if (re.sub(r'(:[!_\-\w]+:)', '', emoji.demojize(x)) != "") else np.nan)
0                         nice
1                      Insane3
2                          NaN
3               @bertelsen1986
4    Luckily I have one to 🔥💪🏻
Name: a, dtype: object
0
Dishin H Goyani 30 août 2020 à 11:12

Vous pouvez détecter les lignes contenant uniquement des émojis en effectuant une itération sur les caractères Unicode de chaque ligne (en utilisant emoji et unicodedata packages):

df = {}
df['Comments'] = ["Test", "Hello 😉", "😉😉😉"]

import unicodedata
import numpy as np
from emoji import UNICODE_EMOJI
for i in range(len(df['Comments'])):
    pure_emoji = True
    for unicode_char in unicodedata.normalize('NFC', df['Comments'][i]):
        if unicode_char not in UNICODE_EMOJI:
            pure_emoji = False
            break
    if pure_emoji:
        df['Comments'][i] = np.NaN
print(df['Comments'])
0
shredEngineer 30 août 2020 à 11:21