我有一个数据集,需要通过groupby()找到每个唯一组合的计数。
body-style make
0 convertible alfa-romeo
1 convertible alfa-romeo
2 hatchback alfa-romeo
3 sedan audi
4 sedan audi
我需要的是产生如下所示的输出:
make body-style count
0 alfa-romero convertible 2
1 alfa-romero hatchback 1
2 audi sedan 2
尝试了以下代码:
body = pd.DataFrame({'make':['alfa-romeo','alfa-romeo','alfa-romeo','audi','audi'], 'body-style':['convertible','convertible','hatchback','sedan','sedan']})
body.groupby(by=['make','body-style'], as_index=False).count()
此聚合引发“列表索引超出范围”错误。但是,当我从groupby子句中删除任何一列时,它就能够给出按剩余列分组的计数。
如果我删除as_index=False,则不会有错误,但结果对象将同时包含列make和body style作为索引的一部分,并且不会有任何计数数据。
我可以在datframe中添加另一列,用1s填充它,然后在groupby上取一个sum()
,而不是count()
。但我想知道是否有一个更干净的方法来做到这一点。
只有在至少有一列未用于分组时,才能使用GroupBy.count()
。
如果按DF中的所有列进行分组,请改用.size()
:
In [119]: body.groupby(['make','body-style']).size().reset_index(name='count')
Out[119]:
make body-style count
0 alfa-romeo convertible 2
1 alfa-romeo hatchback 1
2 audi sedan 2
我有一堆数据帧,我连接成一个大数据帧。所有行都有一个datetime、一个名称,然后是一些具有随机值的列,例如,数据帧可以如下所示: 现在,我需要按对这些行进行分组,并将它们分成60分钟的bins,我目前的做法如下: 这可以用任何方式来完成吗?或者我必须将我的数据帧一分为二,然后在之后加入?
我有一个关于几千个城市学校数据的数据框。学校是行标识符,城市编码如下: 知道我有几千个城市,如何将城市变量转换为数字?我想一个热编码是不合适的,因为我会有太多的列。将千级分类变量转换为数字变量的一般方法是什么? 谢谢你。
我来自SQL环境,正在学习Python Pandas中的一些内容。我有一个关于分组和聚合的问题。 假设我按年龄类别对数据集进行分组,并计算不同的类别。在MSSQL中,我会这样写: 结果集是一个带有两列的“普通”表,第二列我命名为Count。 当我想在Pandas中进行等效时,groupby对象的格式不同。所以现在我必须重置索引,并在下面一行中重命名列。我的代码如下所示: 我的问题是,这是否可以一次
我正在用php和ajax创建一个消息传递站点。 获取对话有问题。 问题是,每当两个用户在他们之间聊天时,就会有两个id不同的行; A和B正在聊天,彼此只写了4条消息 消息数据库是这样的 我的目标是用这个代码获取记录 $页面所有者是登录的用户; 使用这种方法,我可以进行两次相同的对话 a 代码在页面上给了我两次对话,我只想得到一个结果; 我的整个php代码是这样的
我有两个接近1000大小的整数向量,我要做的是检查这两个向量的平方整数和是否相同。所以我编写以下代码:
我肯定错过了一些简单的东西。尝试合并熊猫中的两个数据帧,它们的列名基本相同,但右边的数据帧有一些左边没有的列,反之亦然。 我已尝试使用外部联接进行联接: 但这会产生: 我还指定了一个要连接的列(例如,on="id"),但这会重复所有列,除了"id",如attr_1_x、attr_1_y,这并不理想。我还传递了整个列列表(有很多)到on: 其产生: 我错过了什么?我想得到一个附加了所有行的df,并且