python - Pandas:基于 pandas 列中匹配子字符串的 Groupby

标签 python pandas dataframe group-by

我有一个包含以下元素的列表:

emails= ['xyz.com', 'abc.com','def.com']

现在,我有一个如下所示的数据框:

df:

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

我想根据子字符串对 groupby 进行计数,其中子字符串是列表中的元素。

因此,输出应如下所示:

abc.com     2
def.com     3
xyz.com     2

我当前的代码:

for domain in list1:
    count = df.groupby( [df.Email_Address.str.find(domain)]).sum()

最佳答案

使用Series.str.extract用于通过列表获取值并通过 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

关于python - Pandas:基于 pandas 列中匹配子字符串的 Groupby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55001289/

相关文章:

python - hvplot.heatmap 与 Pandas 数据框 : How to specify value dimensions?

python - Heroku CLI 登录失败,错误为 "Error: ENOENT: no such file or directory, open ' H :/_netrc'"

python - 在 matplotlib 线图上向 x 轴和图例添加月份

Python 比较列表与字典值

Pandas 按年份分组按 n 个最大值过滤数据框

python - 如何根据单独数据帧中列值的存在来过滤数据帧的行并附加第二个数据帧中的列

python - 来自包含 NaN 值的数据的 Pandas 数据框列

python - 如何在 DataFrame 列中匹配 'key off' 对

python - 可视化修改后的 SIR 模型

python - 如何使用剪贴板操作 (ctrl-c/ctrl-v) 复制/剪切/粘贴文件