【问题】关于 Pandas 的 apply(pd.value_counts).fillna(0) 结果不理解

今天学习 Pandas 的时候遇到一个问题,在网上搜也没有查到答案,先占一个坑吧,明天去请教一下别人。

问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
In [242]: data = DataFrame({'Qu1': [1, 3, 4, 3, 4], 'Qu2': [2, 3, 1, 2, 3], '
...: Qu3': [1, 5, 2, 4, 4]})
In [243]: data
Out[243]:
Qu1 Qu2 Qu3
0 1 2 1
1 3 3 5
2 4 1 2
3 3 2 4
4 4 3 4
In [244]: result = data.apply(pd.value_counts).fillna(0)
In [245]: result
Out[245]:
Qu1 Qu2 Qu3
1 1.0 1.0 1.0
2 0.0 2.0 1.0
3 2.0 2.0 0.0
4 2.0 0.0 2.0
5 0.0 0.0 1.0

data.apply(pd.value_counts).fillna(0)这行根据代码是计算每列中各个数字出现的次数,然后NaN值用0替换。

我的理解是每个值都至少出现了一次,怎么会有NaN,而且对于结果中的数据以及索引我都不理解,索引值为什么变成了[1, 2, 3, 4, 5]??

十分不解,得想出来!