我正在尝试在a = zeros(1, 15);
a(1) = 4.5;
for k = 1:14
a(k + 1) = c * a(k);
end
last_a = a(end);
上执行groupby,以便我可以显示col1中等于1的行数。
DF:
id column
我的代码:
id col1 col2 col3
a 1 1 1
a 0 1 1
a 1 1 1
b 1 0 1
我得到的输出是2.它没有显示来自其他df.groupby(['id'])[col1].count()[1]
的值,如b。
我想:
ids
如果可能,每个ID的总行数也会显示为新列吗?
示例:
id col1
a 2
b 1
答案 0 :(得分:1)
假设col1中只有1和0,您可以使用agg
:
df.groupby('id', as_index=False)['col1'].agg({'col1': 'sum', 'total': 'count'})
# id total col1
#0 a 3 2
#1 b 1 1
答案 1 :(得分:0)
这是因为您的行ID是' a'它们中的两个是相同的,这就是为什么它被分组并被视为一个然后它添加了在其第1列上包含0值的唯一行。你不能组行上具有不同值的行。
是的,您可以在输出中添加它。只需放置一种方法,即如何计算代码列部分的所有行。
答案 2 :(得分:0)
如果要概括解决方案以在col1中包含非零值,则可以执行以下操作。这也正确地对列进行排序。
df.set_index('id')['col1'].eq(1).groupby(level=0).agg([('col1', 'sum'), ('total', 'count')]).reset_index()
id col1 total
0 a 2.0 3
1 b 1.0 1
在agg
方法中使用元组,其中第一个值是列名,第二个聚合函数对我来说是新的。我只是在试验它似乎工作。我不记得在文档中看到它所以请谨慎使用。