熊猫数据框:获取组中每个子组的第一行的平均值

bprsch:

我有一个如下所示的熊猫数据框:

df = pd.DataFrame({'Person_ID': [1,1,1,1,1,1,2,2,2,3,3,3,3],
                  'Item_ID': [1,1,2,4,4,4,2,3,3,1,2,2,2],
                   'Value': [1,4,6,5,8,7,3,2,9,8,4,1,2]})

我想通过person_id和item_id对其进行分组,然后获取每个第一行的平均值。例如:Person_ID 1与“ Item_ID的1,2和4”相关联。此Person_ID和这些组的第一项的值分别为1,6和5。平均为4。

    Person_ID   Item_ID Value
0   1   1   1
1   1   1   4
2   1   2   6
3   1   4   5
4   1   4   8
5   1   4   7
6   2   2   3
7   2   3   2
8   2   3   9
9   3   1   8
10  3   2   4
11  3   2   1
12  3   2   2

期望的结果:

Person_ID Average_value_first_entries
1   4
2   2.5
3   6

我注意到这个问题是类似的,但是这个问题的版本更复杂:Pandas数据框获取每个组的第一行。在这种情况下,我不想按一个“ id”进行分组,而是希望按两个“ id”进行分组并取平均值。

我尝试了以下方法:

df.groupby(['Person_ID', 'Item_ID']).first()['Value']

但是,这将返回每个“第一个”条目,而不是平均值。

Person_ID  Item_ID
1          1          1
           2          6
           4          5
2          2          3
           3          2
3          1          8
           2          4
Name: Value, dtype: int64

任何帮助,将不胜感激。我特别感谢“高效计算”(时间)解决方案,因为实际数据集包含120万行。

Mayank Porwal:

和的first每组中找出之后,您需要重新分组以找到均值。像这样:Person_IDItem_IDPerson_ID

In [1312]: d = df.groupby(['Person_ID','Item_ID'], as_index=False).head(1)

In [1315]: d.groupby('Person_ID', as_index=False)['Value'].mean()
Out[1315]: 
   Person_ID  Value
0          1    4.0
1          2    2.5
2          3    6.0

或按照@Datanovice的建议单行显示:

In [1320]: df.groupby(['Person_ID','Item_ID']).first().groupby(level=0)['Value'].mean().to_frame().reset_index()
Out[1320]: 
   Person_ID  Value
0          1    4.0
1          2    2.5
2          3    6.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫数据框获取每个组的第一行

从第一行开始获取熊猫数据框列表的移动平均值,而不是最后一行

熊猫数据框获取每个组的第一行并复制到其他行

从每个子组中选择第一行(熊猫)

在熊猫数据框中为每个组添加第一行

当我从文件中的一组数据计算平均值时,我可以跳过第一行吗

计算列表框中一行的一组整数的平均值

如何用熊猫数据框中第一行和相应行之间的列平均值填充特定值

熊猫:计算数据框各列的n个值的一组平均值

熊猫-一组跨多列的滚动平均值;大数据框

Dask数据框:获取每个已排序组的第一行

在熊猫数据框中的组中制作索引第一行

在列表的每个数据框中添加一行,其中包含某些行的平均值

根据熊猫数据框中的条件删除每个组的最后一行

如何在每个组的多索引数据框中删除第一行?

将组平均值分配给python / pandas中的每一行

如何从MySQL表中的一组行中获取平均值和最后数据

如何在数据帧的每个子组中找到移动平均值

如何获取熊猫数据框中列表的平均值

如何使用R复制数据帧每个子组的第一行?

熊猫-如何将多索引数据框中的列缩放到每个级别= 0组中的第一行

熊猫为每个值组选择第一行

计算数据框中每一行的滚动平均值

如何将熊猫数据框的值除以第一行的每一组?

用第一行值替换每个组中的行。熊猫集团

根据一组条件为多列中的每一行计算自定义平均值

如何获取数据框中每个组的均值

查找行和列组熊猫的平均值

熊猫:如果组的大小大于平均值,则为行