0
votes

Modifier la colonne de données avec regex

J'ai un jeu de données appelé Data. Theres une colonne appelée NetworkDomain qui ressemble à ceci, Data ['NetworkDomain']: xxx

Je voudrais filtrer toutes les valeurs se terminant par ".com" ou ".NET" à l'aide de Regex et Attribuez toutes les autres valeurs comme 0.

J'ai essayé les données ['NetworkDomain'] [Data ['NetworkDomain']. str.contains (". Com $ | .NET $", regex = vrai) ] Qui retourne: xxx

Comment puis-je définir toutes les autres valeurs dans les données [NetworkDomain] qui ne sont pas ".net" ou ".com 'pour être 0? < / p>


2 commentaires

'0', null, ou voulez-vous dire que vous voulez supprimer ces valeurs?


Salut luuk je voulais dire '0'.


3 Réponses :


1
votes

Vous pouvez utiliser dataframe.apply code>, qui appliquera une fonction sur un axe du Dataframe code>.

>>> import re
>>> import pandas as pd
>>> regex = re.compile(r".com$|.net$")
>>>
>>> def my_func(row):
...     if regex.search(row):
...         return row
...     return 0  # default
...
>>> df = pd.DataFrame(
...     [
...         {"Domain": " amazonaws.com"},
...         {"Domain": " amazonaws2.com"},
...         {"Domain": " amazonaws.net"},
...         {"Domain": "(not set)"},
...     ]
... )
>>>
>>> df["Domain"] = df["Domain"].apply(my_func)
>>> print(df)
            Domain
0    amazonaws.com
1   amazonaws2.com
2    amazonaws.net
3                0


0 commentaires

1
votes

Déterminez la ligne qui ne satisfait pas la condition et modifie la valeur de cette ligne xxx


0 commentaires

1
votes

Utilisez DataFrame.apply () Pour appliquer une fonction à chaque ligne de la série, Remarque L'argument ARGS doit être transmis sous forme de tuple:

from pandas import DataFrame
import re

d={'col': [1,2,3], 'col2': ['a.net',2,3]}

df=DataFrame(columns=d.keys(), data=d)

def mask0(s, pattern):

    s =str(s)

if re.match(pattern, s):
    return s
else:
    return 0

pat = re.compile('.+[\.net|\.com]')
df['col2'] = df['col2'].apply(mask0, args=(pat,))

print(df)


0 commentaires