首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >输出项目的数量作为标题熊猫

输出项目的数量作为标题熊猫
EN

Stack Overflow用户
提问于 2020-02-06 16:36:16
回答 2查看 79关注 0票数 2

这是我的数据:“”

代码语言:javascript
复制
 customer product     product1
0        A    hats        shoes
1        A   socks        shoes
2        B   socks        shoes
3        C    hats        shoes
4        C    None  accessories
5        B   socks        shoes
6        A    hats        shoes
7        C    None  accessories

‘我想输出这样的东西:

代码语言:javascript
复制
customer    shoes   hats    socks   accessories
A             #       #        #    #
B             #       #        #    #
C             #       #        #    #

我试过这样的分组:‘

代码语言:javascript
复制
dfB.set_index('customer').groupby(['product', 'product1']).agg({'product':['count'], 'product1':['count']}) '''

我得到了这样的输出:

“”“

代码语言:javascript
复制
 product product1
                   count    count
product product1                 
 hats   shoes          3        3
 socks  shoes          3        3

“”“

请帮帮忙

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-06 17:02:49

你可以melt然后pivot_table

代码语言:javascript
复制
# df = df.replace('None', None) # If `'None'` and not `None`

(df.melt('customer', value_name='product')
   .pivot_table(index='customer', columns='product', aggfunc='size'))

product   accessories  hats  shoes  socks
customer                                 
A                 NaN   2.0    3.0    1.0
B                 NaN   NaN    2.0    2.0
C                 2.0   3.0    1.0    NaN
票数 3
EN

Stack Overflow用户

发布于 2020-02-06 16:39:29

IIUC

我们可以将索引设置为“customer”,然后对数据进行堆栈,允许您使用value_counts进行聚合。

代码语言:javascript
复制
df2 = df.set_index('customer').stack().groupby(level=0).value_counts().unstack()

-

代码语言:javascript
复制
print(df2)
          None  accessories  hats  shoes  socks
customer                                       
A          NaN          NaN   2.0    3.0    1.0
B          NaN          NaN   NaN    2.0    2.0
C          2.0          2.0   1.0    1.0    NaN

如果您不关心None,则可以将其转换为真正的空值,并且它将在groupby中被忽略。

代码语言:javascript
复制
print(df.replace('None',np.nan).set_index('customer').stack().groupby(level=0).value_counts().unstack())

          accessories  hats  shoes  socks
customer                                 
A                 NaN   2.0    3.0    1.0
B                 NaN   NaN    2.0    2.0
C                 2.0   1.0    1.0    NaN
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60099669

复制
相关文章

相似问题

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