开发者社区> 问答> 正文

在panda DataFrame中交换和组列名

我有一个数据框架,里面有一些定量数据和一个定性数据。我想使用描述来计算统计和分组列使用定性数据。但是我并没有得到我想要的关卡顺序。以下是一个例子:

df = pd.DataFrame({k: np.random.random(10) for k in "ABC"})
df["qual"] = 5 * ["init"] + 5 * ["final"]

DataFrame是这样的:

          A         B         C   qual
0  0.298217  0.675818  0.076533   init
1  0.015442  0.264924  0.624483   init
2  0.096961  0.702419  0.027134   init
3  0.481312  0.910477  0.796395   init
4  0.166774  0.319054  0.645250   init
5  0.609148  0.697818  0.151092  final
6  0.715744  0.067429  0.761562  final
7  0.748201  0.803647  0.482738  final
8  0.098323  0.614257  0.232904  final
9  0.033003  0.590819  0.943126  final

现在我想按qual列分组并使用describe计算统计描述符。我是这样做的:

ddf = df.groupby("qual").describe().transpose()
ddf.unstack(level=0)

和我

qual      final                          init                    
              A         B         C         A         B         C
count  5.000000  5.000000  5.000000  5.000000  5.000000  5.000000
mean   0.440884  0.554794  0.514284  0.211741  0.574539  0.433959
std    0.347138  0.284931  0.338057  0.182946  0.274135  0.355515
min    0.033003  0.067429  0.151092  0.015442  0.264924  0.027134
25%    0.098323  0.590819  0.232904  0.096961  0.319054  0.076533
50%    0.609148  0.614257  0.482738  0.166774  0.675818  0.624483
75%    0.715744  0.697818  0.761562  0.298217  0.702419  0.645250
max    0.748201  0.803647  0.943126  0.481312  0.910477  0.796395

我接近我想要的,但我想交换和分组列索引,如:

                       A               B               C
qual      initial  final  initial  final  initial  final

有办法吗? 问题来源StackOverflow 地址:/questions/59381984/swap-and-group-column-names-in-a-pandas-dataframe

展开
收起
kun坤 2019-12-27 17:21:00 411 0
1 条回答
写回答
取消 提交回答
  • 使用列。swaplevel,然后sort_index按级别=0和轴='列':

    ddf = df.groupby('qual').describe().T.unstack(level=0)
    
    ddf.columns = ddf.columns.swaplevel(0,1)
    ddf = ddf.sort_index(level=0, axis='columns')
    

    或者在一行中使用DataFrame。swaplevel而不是index.swaplevel:

    ddf = ddf.swaplevel(0,1, axis=1).sort_index(level=0, axis='columns')
    
              A          B          C     
    qual  final init final init final init
    count  5.00 5.00  5.00 5.00  5.00 5.00
    mean   0.44 0.21  0.55 0.57  0.51 0.43
    std    0.35 0.18  0.28 0.27  0.34 0.36
    min    0.03 0.02  0.07 0.26  0.15 0.03
    25%    0.10 0.10  0.59 0.32  0.23 0.08
    50%    0.61 0.17  0.61 0.68  0.48 0.62
    75%    0.72 0.30  0.70 0.70  0.76 0.65
    max    0.75 0.48  0.80 0.91  0.94 0.80
    
    2019-12-27 17:21:06
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
对 2000 多亿条数据做一次 group by 需要多久? 立即下载
对2000多亿条数据做一次Group By 需要多久 立即下载
低代码开发师(初级)实战教程 立即下载