2 回答
TA贡献1735条经验 获得超5个赞
Series.value_counts()您可以与调用一起使用来.reindex快速解决此问题。
创建样本数据:
df = pd.DataFrame({
"Value": [10, 8, 1, 2, 3, 10, 10, 10, 1, 1]
})
print(df)
Value
0 10
1 8
2 1
3 2
4 3
5 10
6 10
7 10
8 1
9 1
创建一个 value_range,它是我想要计数的最小/最大值。在本例中,我想查看 0-10 之间的数字在“值”列中出现了多少次。
然后,我们用于df["Value"].value_counts()获取该列中每个值出现的次数。
最后,我们使用reindex(value_range, fill_value=0)重新排序我们的输出,value_counts()以包含最初不在“值”列中的数字(例如 4、5、6、7、9),如果是这种情况,它将用 0 填充这些不存在的数字(因为它们在我们原来的专栏中出现过 0 次)
value_range = range(0, 11)
out = df["Value"].value_counts().reindex(value_range, fill_value=0)
print(out)
0 0
1 3
2 1
3 1
4 0
5 0
6 0
7 0
8 1
9 0
10 4
Name: Value, dtype: int64
TA贡献1830条经验 获得超9个赞
我假设你的要求是:
对于 [0,1,2....100000] 中的每个 num,计算 num 在“值”列中出现的次数。
例如结果: 0:出现 x 次 1:出现 x 次 ....
counts_dict = dict
for i in [1,2,.....,100000]:
#how many rows have this value?
count = len(df[df.value==i])
#add this to a dictionary
counts_dict.update({i:count})
您现在拥有 [1,2,.....,100000] 中每个值以及它们出现的次数的字典。为了简单起见,您可以将其视为数据框:
s = pd.Series(counts_dict, name='counts')
其中 s 的索引是您的商品,值是计数
添加回答
举报