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 的索引是您的商品,值是計數
添加回答
舉報