python - Python,如何获取组中特定值的计数?
问题描述
我有一个包含 3 列的 pandas 数据框(df)
df.columns = ['date','color','tag']
“标签”列包含值“A”、“B”、“C”我想创建一个新列“l3A”,向我显示特定值的最后 3 次出现的计数,比如“标签”中的“A”列,但按颜色分组。
当我使用以下代码时,它可以工作,但仅适用于总行数范围内的出现总数。
df['l3A'] = df.query('tag == "A"').tag.count()
如何获取 df.groupby('color') 组和最后 3 行中特定值的出现次数?
解决方案
如果需要计算tag
每组颜色的最后 3 个值(如果匹配),则A
使用自定义函数GroupBy.transform
获取由比较方式填充的布尔掩码填充sum
的新列的最后 3 个值:new
A
df=pd.DataFrame({'date': pd.date_range('2020-01-01', periods=8),
'color':['red','red','red','red','blue','green','green','green'],
'tag':['A','D','D','D','A','A','A','D']})
#sorting if necessary
# df = df.sort_values(['color','date'])
f = lambda x: x.tail(3).sum()
df['l3A'] = df.assign(new= df['tag'].eq("A")).groupby('color')['new'].transform(f)
print (df)
date color tag l3A
0 2020-01-01 red A 0
1 2020-01-02 red D 0
2 2020-01-03 red D 0
3 2020-01-04 red D 0
4 2020-01-05 blue A 1
5 2020-01-06 green A 2
6 2020-01-07 green A 2
7 2020-01-08 green D 2
推荐阅读
- reactjs - 如何在 ComponentDidMount 中设置状态
- javascript - 如何将 2d 数据输入 d3 并访问每个子数组的句柄以操作其元素?
- c# - unity3d将Texture2d转为位图格式
- bash - 设置 spotify API 时遇到问题,./confure 不起作用(创建项目文件夹和文件)
- javascript - Patreon 重定向后浏览器本地存储丢失
- python - 缓存解决方案中的斐波那契
- c# - 裁剪 Base64/位图,不裁剪
- rest - 将图像添加到 GET 请求是一种糟糕的设计模式吗?
- php - 如何根据之前使用 sql 和 php 所做的选择来限制选择中的选项?
- python - 如何在我的代码中使用更好的“尝试”和“除外”?