python - Groupby 中的项目计数

标签 python pandas duplicates pandas-groupby

这是一个更大的数据帧的示例。我有一个由 4 个分组组成的数据框

gr = df.groupby(np.arange(len(df.index))//4)

我正在尝试将每组 4 个字母中唯一字母的字母计数放入名为“计数”的新列中。

我已经尝试了一些方法,但仍然无法将其转化为最终形式。任何帮助将不胜感激。我尝试过 df.duplicate, value_count,但是 它的形式不会达到预期的效果。有任何想法吗?也许是一个 value_count,然后将字母映射到正确的位置?

我还想避免 for 循环。我正在寻找更多的 pandas dataframe 技巧或者可能有用的 lambda x 函数。

import pandas as pd
import numpy as np

data= [['X',1000],
['X',60],
['X',60],
['Y',40],
['X',60],
['Z',30],
['X',60],
['Z',30],
['X',60],
['Z',30],
['Y',40],
['S',25]]

df = pd.DataFrame(data,columns=['Letter','Cost'])

#groupby4s
gr = df.groupby(np.arange(len(df.index))//4)

我正在寻找的表格:

    Letter  Cost  Count 
0        X    60      3
1        X    60      3
2        X    60      3
3        Y    40      1
4        X    60      2
5        Z    30      2
6        X    60      2
7        Z    30      2
8        X    60      1
9        Z    30      1
10       Y    40      1
11       S    25      1

最佳答案

尝试将 groupbytransformcount 结合使用:

df['Count'] = df.groupby([np.arange(len(df.index))//4, df['Letter']])['Letter']\
                .transform('count')

输出:

   Letter  Cost  Count
0       X  1000      3
1       X    60      3
2       X    60      3
3       Y    40      1
4       X    60      2
5       Z    30      2
6       X    60      2
7       Z    30      2
8       X    60      1
9       Z    30      1
10      Y    40      1
11      S    25      1

关于python - Groupby 中的项目计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55108430/

相关文章:

python - 在某些条件下从数据框中删除重复项

ant - 从存储在 ant 属性中的逗号分隔字符串中删除重复项

python - 合并一个数据帧中与另一数据帧中的特定列不匹配的行 Python Pandas

python - 多个子域,通用路由模式

位于 Raspbian 上的 rc.local 中的 Python 脚本在启动时未启动

python - 使用 Pandas 解析带有巨大 CSV 中嵌套值的 JSON 列

python - pandasql::sqldf 不捕获循环变量

python - 是否可以恢复迭代器并可以分配其值/状态?

javascript - 正则表达式查找 char '.' 除了以 @ 开头的单词

python - 如何在 Pandas 中按列表删除行