我认为您正在执行行/列明智的操作,因此可以使用
apply:
In [11]: d.apply(pd.Series.value_counts, axis=1).fillna(0)Out[11]: 1 2 30 1 1 11 4 0 12 1 1 13 0 4 1
注意:在工作中有一个value_counts
适用于0.14的Dataframe方法…将使此方法更加有效和简洁。
值得注意的是,熊猫
value_counts也起工作的numpy的阵列上,这样就可以把它传递数据帧的值(作为1-d阵列 视图
使用
np.ravel):
In [21]: pd.value_counts(d.values.ravel())Out[21]: 2 61 63 4dtype: int64
另外,您几乎可以正确地解决此问题,但是您需要堆叠和拆栈:
In [22]: d.stack().groupby(level=0).apply(pd.Series.value_counts).unstack().fillna(0)Out[22]: 1 2 30 1 1 11 4 0 12 1 1 13 0 4 1
此错误似乎有点自已解释(4!= 16):
len(d.stack()) #16d.stack().groupby(arange(4))AssertionError: Grouper and axis must be same length
也许您想通过:
In [23]: np.repeat(np.arange(4), 4)Out[23]: array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3])



