我有一个数据框,需要将其转换为三路频率表: 将 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?
尝试:
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