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版本。