首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >熊猫群使用相同类别的多个/列列表?

熊猫群使用相同类别的多个/列列表?
EN

Stack Overflow用户
提问于 2018-10-22 02:02:55
回答 4查看 696关注 0票数 1

基本上,我想转到:

代码语言:javascript
运行
复制
    Date    0       1       2
0   10-1    thing1  None    None
1   10-1    thing1  thing1  None
2   10-2    thing2  thing1  None
3   10-3    thing1  thing1  thing2

分成一组:

代码语言:javascript
运行
复制
    Date    0               
0   10-1    thing1  3
2   10-2    thing1  1
            thing2  1
3   10-3    thing1  2
            thing2  1

Details:基本上,我有一个来自JSON导入的复杂的"object“列。这是一个字典列表,每一个都包含有我感兴趣的内容的另一个列表。我已经成功地将这个最终列表“扁平化”成单独的列(上面的0,1,2),也成功地将列表本身解压缩到列中(即0,1,2)。这些列的元素都是相同的分类变量(thing1、thing2等)。

我可以想象,您可以为1列和2列中的每一列创建新行,将它们的值存储在0列中,但是如果您能够直接聚合这些值和groupby,那就太好了。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-10-22 02:30:29

我将使用get_dummies,因为它还添加了10-1中缺少的级别(如thing2 )。

代码语言:javascript
运行
复制
pd.get_dummies(df.set_index('Date').replace('None',np.nan),prefix='',prefix_sep='').stack().sum(level=[0,1])
Out[185]: 
Date        
10-1  thing1    3
      thing2    0
10-2  thing1    1
      thing2    1
10-3  thing1    2
      thing2    1
dtype: uint8
票数 3
EN

Stack Overflow用户

发布于 2018-10-22 02:17:15

一定有更好的办法,但我想到的是:

代码语言:javascript
运行
复制
(df.groupby('Date')
   .apply(lambda x: x.drop('Date', axis=1).apply(lambda y: y.value_counts()))
   .sum(axis=1)
   .astype(int))

Date        
10-1  thing1    3
10-2  thing1    1
      thing2    1
10-3  thing1    2
      thing2    1
dtype: int64
票数 0
EN

Stack Overflow用户

发布于 2018-10-22 02:21:06

这对我来说很管用:

代码语言:javascript
运行
复制
df.melt(id_vars='Date').groupby('Date')['value'].value_counts()

产出:

代码语言:javascript
运行
复制
Date  value 
10-1  thing1    3
10-2  thing1    1
      thing2    1
10-3  thing1    2
      thing2    1

说明:melt将三个值列中的所有值放在一个列中,同时保留每个值的日期。然后按日期分组并计算值。

顺便说一句,上面的示例返回了一个包含日期和值的多索引的系列。如果您想要一个数据文件,可以使用:

代码语言:javascript
运行
复制
df.melt(id_vars='Date').groupby('Date').agg({'value':'value_counts'})

它返回具有相同结构的实际数据,因此它仍然有一个包含级别、日期和值的多索引。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52921527

复制
相关文章

相似问题

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