创建频率表,然后计算平均值/SD

问题描述 投票:0回答:1

我有一个数据框,需要将其转换为三路频率表: 将 pandas 导入为 pd

data = {'key':  [1,2,3,4,5,6,7,8,9,10],
        'year': ['2020', '2020', '2021','2021','2020','2020','2021','2021','2022','2022'],
        'period': [1,2,1,2,1,2,1,2,1,2],
        'fac':['51000','51000','61000','61000','51000','61000','61000','61000','61000','61000']
         
        }

这样我就有了三列,按年份按时期列出。

我试过这个:

df2 = pd.crosstab([df['fac'],df['year']], df['period'])
print (df2)

我明白了:

period      1  2
fac   year      
51000 2020  2  1
61000 2020  0  1
      2021  2  2
      2022  1  1

但是有没有办法让它变成三列呢?即

fac   year  period  count

这样我就可以计算计数总和,然后计算平均值、SD 和 UCL/LCL?

pivot-table frequency
1个回答
0
投票

尝试:

df2 = pd.crosstab([df["fac"], df["year"]], df["period"])
print(df2.stack().reset_index(name="count"))

打印:

     fac  year  period  count
0  51000  2020       1      2
1  51000  2020       2      1
2  61000  2020       1      0
3  61000  2020       2      1
4  61000  2021       1      2
5  61000  2021       2      2
6  61000  2022       1      1
7  61000  2022       2      1
© www.soinside.com 2019 - 2024. All rights reserved.