gpt4 book ai didi

python - 在 pandas DataFrame 中交换和分组列名

转载 作者:行者123 更新时间:2023-12-01 00:15:11 24 4
gpt4 key购买 nike

我有一个数据框,其中包含一些定量数据和一个定性数据。我想使用描述来使用定性数据计算统计数据并按列分组。但我没有获得我想要的级别顺序。下面是一个例子:

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

有办法吗?

最佳答案

使用columns.swaplevel然后sort_index通过 level=0axis='columns':

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

关于python - 在 pandas DataFrame 中交换和分组列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59381984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com