我使用的DataFrame如下所示:
Index Type Value
0 A 4
1 A 9
2 C 51
3 B 40
4 C 32
5 C 14
我想将DataFrame中的项目分类为类/范围0-1、11-50、51-100,并创建一个单独的DataFrame,显示这些类中每个类的Type
数量。
Class A B C
0-10 2 0 0
11-50 0 1 2
51-100 0 0 1
有人能帮忙吗?
您可以在两行中完成:
df['class'] = pd.cut(df['Value'], [0, 10, 50, 100])
df.groupby('class')['Type'].value_counts().rename("count").reset_index().pivot('class', 'Type', 'count').fillna(0).astype(int)
第一行创建您想要的类,第二行给出计数。这里的最终结果是一个透视表(因此使用了pivot
(。结果是:
Type A B C
class
(0, 10] 2 0 0
(10, 50] 0 1 2
(50, 100] 0 0 1
可以随意将class
映射到您要求的确切格式,但一般的想法是使用pd.cut
,它根据值所属的间隔来分配值。