我有一个可能的整数列表:
item_list = [0,1,2,3]
并且某些数字不一定会出现在我的数据框中。例如:
df =
a
0 0
1 0
2 2
3 0
4 1
5 0
6 1
7 0
其中
df['a'].value_counts()
将产生
0 5
1 2
2 1
Name: a, dtype: int64
但我对所有'item_list = [0,1,2,3]'的出现感兴趣,所以基本上,我希望看到类似的东西:
0 5
1 2
2 1
3 0
Name: a, dtype: int64
第一列是'item_list'
如何获得此结果?
答案 0 :(得分:5)
您也可以使用reindex:
df['a'].value_counts().reindex(item_list).fillna(0)
答案 1 :(得分:3)
您可以将值转换为Categorical
:
item_list = [0,1,2,3]
df.a = df.a.astype('category', categories=item_list)
print (df['a'].value_counts())
0 5
1 2
2 1
3 0
Name: a, dtype: int64
使用reindex
和参数fill_value
:
print (df['a'].value_counts().reindex(item_list, fill_value=0))
0 5
1 2
2 1
3 0
Name: a, dtype: int64