python - 列的 Pandas 数据框总和并收集结果

标签 python pandas

给定以下数据框:

import pandas as pd
p1 = {'name': 'willy', 'age': 11, 'interest': "Lego"}
p2 = {'name': 'willy', 'age': 11, 'interest': "games"}
p3 = {'name': 'zoe', 'age': 9, 'interest': "cars"}
df = pd.DataFrame([p1, p2, p3])
df

    age interest    name
0   11  Lego        willy
1   11  games       willy
2   9   cars        zoe

我想知道每个人的兴趣总和,让每个人在列表中只显示一次。我执行以下操作:

Interests = df[['age', 'name', 'interest']].groupby(['age' , 'name']).count()
Interests.reset_index(inplace=True)
Interests.sort('interest', ascending=False, inplace=True)
Interests

    age name    interest
1   11  willy   2
0   9   zoe     1

这行得通,但我觉得我做错了。现在我使用“兴趣”列来显示我的总和值,这没问题,但就像我说的那样,我希望有更好的方法来做到这一点。

我在 Pandas 中看到了很多关于计数/求和的问题,但对我来说,我忽略“重复项”的部分是关键。

最佳答案

您可以使用大小(每组的长度),而不是计算组中每列中的非 NaN 实体。

In [11]: df[['age', 'name', 'interest']].groupby(['age' , 'name']).size()
Out[11]:
age  name
9    zoe      1
11   willy    2
dtype: int64

In [12]: df[['age', 'name', 'interest']].groupby(['age' , 'name']).size().reset_index(name='count')
Out[12]:
   age   name  count
0    9    zoe      1
1   11  willy      2

关于python - 列的 Pandas 数据框总和并收集结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33504457/

相关文章:

python - 如何将 pyautogui 连接到虚拟显示器?

python - 带有使用管理器方法的自定义查询集的 Django Prefetch

javascript - 似乎无法使用 Python 和 Node.js 进行 POST

python - 代码运行两次 - python 上下文管理器

python - 如何在 python Django 框架中只执行一个进程的运行实例?

Python DataFrame 根据列中的条件对列中的值求和

python - 如何将唯一的行组合转换为排序的元组

pandas - 如何向 csv 文件添加分隔符

python - 如何加快对数百万行的多个 str.contains 搜索?

python - 识别 pandas 数据框中列的数据类型的正确方法是什么?