首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有海运的列

具有海运的列
EN

Stack Overflow用户
提问于 2018-04-05 11:17:46
回答 1查看 1.3K关注 0票数 3

我有这个数据:

代码语言:javascript
运行
复制
df = pd.DataFrame({'col1': ['A', 'A', 'B', 'B', 'B'], 'col2': ['A1', 'B1', 'B1', 'B1', 'A1']})

              col1  col2

0   A   A1
1   A   B1
2   B   B1
3   B   B1
4   B   A1

我做了一次集体表演。结果是一个多索引列。

代码语言:javascript
运行
复制
df = df.groupby(['col1']).agg({'col2': ['nunique','count']})

       col2
       nunique   count
 col1       
 A     2           2
 B     2           3

然后,我在海运图书馆做了一个连接图

代码语言:javascript
运行
复制
sns.jointplot(x=['col2','nunique'],y=['col2','count'],data=df,kind='scatter')

我犯了这个错误

代码语言:javascript
运行
复制
TypeError: only integer scalar arrays can be converted to a scalar index

我的问题是:

是否有一种方法可以将多索引列拆分为两个独立的列,如以下所示?

代码语言:javascript
运行
复制
col1  col2_unique col2_count        
 A     2           2
 B     2           3

是否有方法将多索引列合并起来?

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-05 11:21:43

您可以通过在列表中指定列col2来更改聚合,并且在agg中只使用聚合函数来避免列中的MultiIndex

代码语言:javascript
运行
复制
df = df.groupby(['col1'])['col2'].agg(['nunique','count'])
print(df)
      nunique  count
col1                
A           2      2
B           2      3

sns.jointplot(x='nunique', y='count', data=df, kind='scatter')

如果需要在MultiIndex中使用dictinary,也可以使用扁平的agg --例如聚合另一列:

代码语言:javascript
运行
复制
df = df.groupby(['col1']).agg({'col2': ['nunique','count'], 'col1':['min']})

df.columns = df.columns.map('_'.join)
print (df)
     col1_min  col2_nunique  col2_count
col1                                   
A           A             2           2
B           B             2           3
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49671050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档