当前位置: 首页 > 知识库问答 >
问题:

按数据帧访问组中的聚合值[重复]

戈华茂
2023-03-14

我有一个数据帧的值,如:

name    action           time
------------------------------
Sam     enters building  20:00
Chris   enters building  20:15
Sam     walks up stairs  20:20
Steve   leaves building  20:25
James   enters building  20:30
Chris   takes elevator   20:32
Sam     leaves building  20:35
Chris   leaves building  20:40
Sam     enters building  20:45
...

我想得到每个人不同行动的数量。这一点我可以通过df.groupby(['name','action'])来完成,因为索引=False.size()

然而,这给了我一个视觉效果,我不能做太多。我想将这些计数用于不同的目的。我如何将这些数据放入一个可访问的数据框中,以便获得每个人进出大楼的次数等信息。例如,我可以像df['name'='Sam'


共有3个答案

唐焕
2023-03-14

你也可以使用你最初的想法。在本例中,您将获得熊猫系列。您可以直接为感兴趣的值编制索引。

table = df.groupby(['name','action'], as_index=False).size()
table['Sam']['enters building']
糜野
2023-03-14

只需使用count即可-size不是pandas中的聚合函数,这就是为什么您的命令as_index=False不起任何作用。

df.groupby(['name','action'], as_index=False).count()

产出:

    name           action  time
0  Chris  enters building     1
1  Chris  leaves building     1
2  Chris   takes elevator     1
3  James  enters building     1
4    Sam  enters building     2
5    Sam  leaves building     1
6    Sam  walks up stairs     1
7  Steve  leaves building     1
段干华晖
2023-03-14

要使其成为数据帧,可以使用.reset_index(),然后将其设置为df。

df=df.groupby(['name','action'], as_index=False).size().reset_index()
 类似资料:
  • 我正在用PySpark DataFrames分析一些数据。假设我有一个正在聚合的数据帧< code>df: 这将给我: 聚合工作得很好,但我不喜欢新的列名。有没有办法将此列重命名为人类可以从方法中读取的内容?也许更类似于中的操作:

  • 如何通过键访问Groupby对象中相应的Groupby数据框? 使用以下groupby: 我可以迭代它来获取密钥和组: 我想能够访问一个组的关键: 但是当我试着用这样做时,我得到了一个奇怪的对象,它似乎没有任何与我想要的数据帧对应的方法。 我能想到的最好的办法是: 但是考虑到熊猫在这些事情上通常有多好,这有点令人讨厌。 这样做的内置方法是什么?

  • 我正在尝试通过ID和日期聚合数据帧。假设我有一个DataFrame: 我想通过ID和日期(频率=1W)聚合该值,并得到一个dataframe如下所示: 我理解它可以通过迭代ID并使用grouper聚合价格来实现。有没有更有效的方法不迭代IDS?多谢。

  • 我正在考虑将dataset1分解为每个“T”类型的多个记录,然后与DataSet2连接。但是你能给我一个更好的方法,如果数据集变大了,它不会影响性能吗?

  • 有一个数据帧: 以及熊猫系列: 如何创建包含c1在list1中的行的新数据帧。 输出:

  • 我需要在我的中聚合一个数组。 数据帧是这样创建的 值是一个数组 我想这样想 但我有以下错误 分析异常:由于数据类型不匹配,u“无法解析‘sum(values)’:函数sum需要数字类型,而不是ArrayType(StringType,true);第0行位置0” 数组的维数始终相同。但每次运行的尺寸可能会变化,接近100的长度。 如何在不进行RDD的情况下进行聚合?