我有一个数据
{a : 100, b:102, c:500, d:99, e:78, d:88}
我想按间隔为100的范围对其进行分组。
示例:
{ 100: 2, 0: 3, 500:1 }
是英语
如何用大熊猫表达?
答案 0 :(得分:3)
IIUC,按范围分组通常为pd.cut
:
d = {'a' : 100, 'b':102,'c':500, 'd':99, 'e':78, 'd':88}
bins = np.arange(0,601,100)
pd.cut(pd.Series(d), bins=bins, labels=bins[:-1], right=False).value_counts(sort=False)
输出:
0 3
100 2
200 0
300 0
400 0
500 1
dtype: int64
更新:实际上,pd.cut
似乎过分杀人,您的案件也容易一些了:
(pd.Series(d)//100).value_counts(sort=False)
输出:
0 3
1 2
5 1
dtype: int64
答案 1 :(得分:2)
用于回收箱的最大值为Series
的解决方案,用于标记cut
中所有值不最后为b[:-1]
的标签,然后按GroupBy.size
计算值:
d = {'a' : 100, 'b':102, 'c':500, 'd':99, 'e':78, 'f':88}
s = pd.Series(d)
max1 = int(s.max() // 100 + 1) * 100
b = np.arange(0, max1 + 100, 100)
print (b)
[ 0 100 200 300 400 500 600]
d1 = s.groupby(pd.cut(s, bins=b, labels=b[:-1], right=False)).size().to_dict()
print (d1)
{0: 3, 100: 2, 200: 0, 300: 0, 400: 0, 500: 1}