Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对数据帧进行分组,并计算未显示列的项目数_Python_Pandas - Fatal编程技术网

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))