python - Groupby 值依赖于数据框 pandas

标签 python pandas dataframe crosstab pandas-groupby

我有以下数据框:

df = pd.DataFrame([
    (1, 1, 'term1'),
    (1, 2, 'term2'),
    (1, 1, 'term1'),
    (1, 1, 'term2'),
    (2, 2, 'term3'),
    (2, 3, 'term1'),
    (2, 2, 'term1')
], columns=['id', 'group', 'term'])

我想按 id 对其进行分组和group并计算该 id、组对的每个术语的数量。

所以最后我会得到这样的东西:

enter image description here

我能够通过使用 df.iterrows() 循环所有行来实现我想要的目标并创建一个新的数据框,但这显然效率低下。 (如果有帮助的话,我事先知道所有术语的列表,其中大约有 10 个)。

看起来我必须分组然后对值进行计数,所以我尝试使用 df.groupby(['id', 'group']).value_counts()这不起作用,因为 value_counts在 groupby 系列上运行,而不是在数据帧上运行。

无论如何,我可以在不循环的情况下实现这一目标吗?

最佳答案

我使用groupbysize

df.groupby(['id', 'group', 'term']).size().unstack(fill_value=0)

enter image description here

<小时/>

时间

enter image description here

1,000,000 行

df = pd.DataFrame(dict(id=np.random.choice(100, 1000000),
                       group=np.random.choice(20, 1000000),
                       term=np.random.choice(10, 1000000)))

enter image description here

关于python - Groupby 值依赖于数据框 pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59369440/

相关文章:

python - python 中的 Firefox selenium 失败,错误代码为 127

python - 如何使用列表中的随机样本创建数据框?

pandas - 按多列对dask数据帧进行排序,一些升序,一些降序

python - 按行总和和值过滤

python - 在变量名后自动命名关键字参数

python - 向图像添加 RMS 噪声

python - 使用 BeautifulSoup 和列表从维基百科的信息框中提取特定文本的最佳方法是什么?

python - 使用 Pandas 合并多个 CSV 文件以创建具有动态 header 的最终 CSV 文件

python - 如何在 pandas 中以复杂的条件进行分箱

python-3.x - Python 数据框 : converting columns into rows