Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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,如何从多级列中删除第一级 对于数据帧: tmp.head(1000).groupby(['user_id', 'aisle_id']).agg({'aisle_id': ['count']}) 给予 aisle_id count user_id aisle_id 382 38 1 84 2 115

如何从多级列中删除第一级

对于数据帧:

tmp.head(1000).groupby(['user_id', 'aisle_id']).agg({'aisle_id': ['count']})
给予

                 aisle_id
                    count
user_id aisle_id         
382     38              1
        84              2
        115             1
3107    43              1
3321    37              1
        69              2

我想在我的列中删除
通道id
。如何通过链接命令而不必启动另一条语句来实现这一点

您可以使用点运算符快速访问列多重索引的第一级。类似于使用单个级别索引访问列的方式

只需在末尾添加
。过道id
。或等效地
[“过道id”]

tmp.head(1000).groupby(['user_id', 'aisle_id']).agg({'aisle_id': ['count']}) \
    .aisle_id

                  count
user_id aisle_id       
381     38            1
382     84            2
        115           1
3107    43            1
3321    37            1
        69            2

评论回复


@displayname这些是等效的
df.release\u id
df.xs('release\u id')
。我想指出的是,它将访问第一级为
通道id
的所有列。如果你要用你曾经的方式来聚合,这将和斯科特伯顿所建议的一样有效。不同之处在于,如果您希望将聚合结果存储到一个超过一列的变量中,那么这些结果将被保留,并且您可以使用
df.roadway\u id
访问
roadway\u id
。ScottBoston解决方案的优点是,当有多个列可用时,我们将计算限制在刚好超过
过道id

使用
reset\u index
在0级将drop设置为
True

tmp.head(1000).groupby(['user_id', 'aisle_id']) \
    .agg({'aisle_id': ['count']}).T.reset_index(level=0, drop=True).T

更改您的groupby语句

tmp.head(1000).groupby(['user_id', 'aisle_id'])['aisle_id'].agg(['count'])

成功了。虽然我不得不将它再转置2次,并降低0级。这确实更短。我不知道我可以在
DataFrameGroupBy
对象上使用那样的
[]
。如果只有一列,这是一个不错的解决方案。如果有另一个
mean
列,例如,那么我想我必须使用Scotts版本。