J'ai une liste qui contient des éléments comme:
for domain in list1: count = df.groupby( [df.Email_Address.str.find(domain)]).sum()
Maintenant, j'ai un dataframe qui ressemble à:
df:
abc.com 2 def.com 3 xyz.com 2
Je veux effectuer un décompte sur groupby basé sur la sous-chaîne où la sous-chaîne est les éléments de la liste.
Par conséquent, la sortie devrait ressembler à:
UserID Email_Address U001 u001@abc.com U002 u002@xyz.com U003 u003@xyz.com U004 u004@abc.com U004 u005@def.com U006 u006@def.com U007 u007@def.com
Mon code actuel:
emails= ['xyz.com', 'abc.com','def.com']
3 Réponses :
Utilisez la série .str.extract
pour obtenir des valeurs par listes et agréger par GroupBy.size
:
pat = '|'.join(emails) s = df['Email_Address'].str.extract('('+ pat + ')', expand=False) df1 = df.groupby(s).size().reset_index(name='Count') print (df1) Email_Address Count 0 abc.com 2 1 def.com 3 2 xyz.com 2
Pour connaître les occurrences d'une valeur spécifique dans un dataframe, vous pouvez utiliser:
for domain in list1: len(df[df['Email_Address'] == domain]) # Save this value whatever you want
Donc je pense que vous cherchez quelque chose comme:
len(df[df['Email_Address'] == your_value])
def.com 3 abc.com 2 xyz.com 2 Name: Email, dtype: int64
Quelle est ta question? Quel est le problème ici ou quelle est la sortie que vous obtenez actuellement?