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?