Python 对数据帧进行分组,并计算未显示列的项目数
好吧,我承认,我很难为这一点制定一个好的头球。所以我将试着做一个例子 这是我的示例数据帧:Python 对数据帧进行分组,并计算未显示列的项目数,python,pandas,Python,Pandas,好吧,我承认,我很难为这一点制定一个好的头球。所以我将试着做一个例子 这是我的示例数据帧: df = pd.DataFrame([ (1,"a","good"), (1,"a","good"), (1,"b","good"), (1,"c","bad"), (2,"a","good"), (2,"b","bad"), (3,"a","none")], columns=["id", "type", "eval"]) 我要做的是: df.groupby(["id", "type"])["id"].
df = pd.DataFrame([
(1,"a","good"),
(1,"a","good"),
(1,"b","good"),
(1,"c","bad"),
(2,"a","good"),
(2,"b","bad"),
(3,"a","none")], columns=["id", "type", "eval"])
我要做的是:
df.groupby(["id", "type"])["id"].agg({'id':'count'})
这导致:
id
id type
1 a 2
b 1
c 1
2 a 1
b 1
3 a 1
这很好,尽管稍后我需要的是,例如,id将在每一行中重复。但这并不是最重要的部分
我现在需要的是这样的东西:
id good bad none
id type
1 a 2 2 0 0
b 1 1 0 0
c 1 0 1 0
2 a 1 1 0 0
b 1 0 1 0
3 a 1 0 0 1
更好的结果是这样的,因为我需要将它放回数据框(最后放在Excel工作表中),并填充所有字段。事实上,我将有更多的专栏进行分组。他们也必须全部居住
id good bad none
id type
1 a 2 2 0 0
1 b 1 1 0 0
1 c 1 0 1 0
2 a 1 1 0 0
2 b 1 0 1 0
3 a 1 0 0 1
谢谢您的帮助。您可以使用+(添加了最后一列)或:
但对于write to excel get:
df1.to_excel('file.xlsx')
所以我需要最后一个
编辑:
我忘记了id
列,但它是重复的列名,因此需要id1
:
df1.insert(0, 'id1', df1.sum(axis=1))
哇,这个答案让我印象深刻。这么快,回答了所有对我来说重要的事情。非常感谢,耶斯雷尔!我的下一个任务是再加上一列C和D的总和,再加上一列C到E的总和。但我想,我会自己完成的;-)很高兴你能帮忙!将多索引写入excel有点问题,因此最好添加一些图片我忘记了,所以把它加到答案的底部。需要,因为需要第一列,但是
reset\u index
引发错误,所以需要将id
重命名为id1
。祝你好运
df1.to_excel('file.xlsx')
df1.reset_index().to_excel('file.xlsx', index=False)
df1.insert(0, 'id1', df1.sum(axis=1))