我知道这不是一个人应该在这里做的事情,尽管我不知道否则我怎么能问这个问题。
data_train = pd.DataFrame({"buying": [0,1,0,1,0,0,0], "maint":[0,1,0,1,0,0,0], "doors": [0,1,0,1,0,0,0],
"persons": [0,1,0,1,0,0,0], "lug_boot":[0,1,0,1,0,0,0], "safety": [0,1,0,1,0,0,0],
"rating" : [1,1,2,1,3,4,5] })
data_train = data_train.groupby(["buying", "maint", "doors", "persons", "lug_boot", "safety"]) \
.agg({"buying": "count", "maint": "nunique"})#.query("buying>1")["maint"].sum()
我的目标是统计有多少行具有相同的第一预测值(购买、维护等),但评级不同。
我的尝试是通过第一列来计算,然后计算我得到的不同评分,这将是非常棒的。
一个重要的假设是,如果两行相同,则它们已被预先擦除。因此,可以找到不同等级的行,但没有相同的行。
在我的示例中,第1行和第3行是相同的,因此其中一行被擦除,没有问题。然而,对于其他人,他们的评级不同,所以有一个问题,我应该得到回报5,因为有5个相同的预测行,它们的评级不同。
这可以理解吗?
由于情况发生了太多变化,并且有了新的信息:
一个解决方案就是:
nuniques = data_train.groupby(data_train.columns[:-1].tolist())['rating'].nunique()
在这里,您可以看到每行(或行组)的唯一评级。现在,如果nunique==1
并且由于没有重复项,我们可以使用nunique对组进行筛选
nuniques[nuniques>1].sum()
5
可以通过以下方式实现:
df = pd.DataFrame({"x1": ["A", "A", "A", "A", "A", "B", "B"], "x2":[1, 1, 2, 3, 4, 2, 3], "x3": [0,1,0,1,0,0,0]})
df.groupby(["x1", "x2"]).agg({'x1':"count", "x3":"nunique"}).query("x1 >1")["x3"].sum()
给予
2
我们正在收集每组的行数(这足以聚合w.r.tx1
)和最后一列的不同值的数量。我们希望每组至少有两行,对吗?然后,我们只需在子查询之后对结果求和,即过滤至少有两个条目的组。
下面有一段代码,它创建了数据框中每列中缺失值的汇总表。我希望我可以构建一个类似的表来计算唯一的值,但是DataFrame没有唯一的()方法,只有每一列是独立的。 (资料来源:https://stackoverflow.com/a/39734251/7044473) 如何为唯一值实现相同的功能?
假设我有以下数据帧: 我想计算每个的不同值的数量。它应产生以下结果: 我该怎么做?
我想在数据的每一列中找到的数量,这样,如果某一列的少于某个阈值,我就可以删除该列。我看了一下,但没有找到任何功能。对我来说太慢了,因为大多数值都是不同的,而且我只对计数感兴趣。
问题内容: 我在Sybase DB中有一个表,其中包含一列createdDateTime。我想要做的是计算在特定但正在累积的时间段之间创建了多少行,即: 7:00-7 : 15 7 : 00-7 :30 7:00-7:45 7: 00-8 :00 …依此类推,直到我有上次分组时间7:00-18:00。 有没有一种好的方法可以在SQL中执行一个查询,该查询将为我返回所有行以及所有行数: 时间听行创建
我想在我的数据的每一列中找到< code>NaN的数目。