当前位置: 首页 > 知识库问答 >
问题:

DataFrame列名中包含的属性/信息

谭泳
2023-03-14
data = pd.DataFrame([[1,0,2,3,4,5],[0,1,2,3,4,5],[1,1,2,3,4,5],[0,0,2,3,4,5]], columns=['split','sex', 'group0Low', 'group0High', 'group1Low', 'group1High'])
means = data.groupby(['split','sex']).mean()
           group0Low  group0High  group1Low  group1High
split sex                                              
0     0            2           3          4           5
      1            2           3          4           5
1     0            2           3          4           5
      1            2           3          4           5
            low high
split   sex group       
    0   0   95  265
0   0   1   123 54
    1   0   120 220
    1   1   98  111
1   0   0   150 190
    0   1   211 300
    1   0   139 86
    1   1   132 250

共有1个答案

宗意蕴
2023-03-14

第一个技巧是使用stack将列聚集到单个列中:

In [6]: means
Out[6]: 
           group0Low  group0High  group1Low  group1High
split sex                                              
0     0            2           3          4           5
      1            2           3          4           5
1     0            2           3          4           5
      1            2           3          4           5

In [13]: stacked = means.stack().reset_index(level=2)
In [14]: stacked.columns = ['group_level', 'mean']
In [15]: stacked.head(2)
Out[15]: 
          group_level  mean
split sex                  
0     0     group0Low     2
      0    group0High     3

现在,我们可以使用pd.series.strgroup_level执行所需的任何字符串操作,如下所示:

In [18]: stacked['group'] = stacked.group_level.str[:6]
In [21]: stacked['level'] = stacked.group_level.str[6:]
In [22]: stacked.head(2)
Out[22]: 
          group_level  mean   group level
split sex                                
0     0     group0Low     2  group0   Low
      0    group0High     3  group0  High

现在你做生意了,你可以为所欲为。例如,对每个组/级别求和:

In [31]: stacked.groupby(['group', 'level']).sum()
Out[31]: 
              mean
group  level      
group0 High     12
       Low       8
group1 High     20
       Low      16
In [113]: stacked.reset_index().groupby(['split', 'sex', 'group', 'level']).sum().head(4)
Out[113]: 
                        mean
split sex group  level      
0     0   group0 High      3
                 Low       2
          group1 0High     5
                 0Low      4
 类似资料:
  • 我定义了一个配置,其中包含每个表的列列表,用作dedup键 例如:配置1: 这些列需要用作重复数据消除键。这个列表是动态的,有些表中有1个值,有些表中有2或3个值 我想做的是从这个列表中建立一个键列 我如何使这个动态的列表适用于任意数量的列。我试过这么做 为了实现这一点,我必须将列表转换为Df,列表中的每个值都需要在单独的列中,我无法理解这一点。 试过这么做但没用 欢迎任何意见,谢谢

  • 我有一个具有以下列名的熊猫数据框: 结果1、测试1、结果2、测试2、结果3、测试3等。。。 我想删除名称中包含单词“Test”的所有列。此类列的数量不是静态的,而是取决于以前的函数。 我该怎么做?

  • 问题内容: 我有一个带有以下列名称的pandas数据框: Result1,Test1,Result2,Test2,Result3,Test3等… 我要删除名称包含单词“ Test”的所有列。这样的列数不是静态的,而是取决于先前的功能。 我怎样才能做到这一点? 问题答案:

  • 如何在Gradle中包含属性文件? 例如,在Ant中,我可以执行以下操作:

  • 本文向大家介绍浅谈dataframe中更改列属性的方法,包括了浅谈dataframe中更改列属性的方法的使用技巧和注意事项,需要的朋友参考一下 在读取文件时将整数变量读成了字符串, 或者需要转换列属性时,通过方法astype Python中 举例: R中 举例: data<-read.csv('data.csv',col.names = c('id','sex','numbers'),string

  • 本文向大家介绍window.location 对象所包含的属性,包括了window.location 对象所包含的属性的使用技巧和注意事项,需要的朋友参考一下 hash//从井号 (#) 开始的 URL(锚) host//主机名和当前 URL 的端口号 hostname//当前 URL 的主机名 href//完整的 URL pathname//当前 URL 的路径部分 port//当前 URL 的