簡體   English   中英

沒有從熊貓value_counts()獲得0索引

[英]Not getting 0 index from pandas value_counts()

total_val_count = dataset[attr].value_counts()      
    for i in range(len(total_val_count.index)):
        print total_val_count[i]

我編寫了這段代碼,它計算數據幀中某個屬性的所有不同值的出現次數。 我面臨的問題是我無法通過使用索引0訪問第一個值。我在第一個循環運行本身中遇到KeyError:0錯誤。

total_val_count包含正確的值,如下所示:

34 2887
4 2708
13 2523
35 2507
33 2407
3 2404
36 2382
26 2378
16 2282
22 2187
21 2141
12 2104
25 2073
5 2052
15 2044
17 2040
14 2027
1984年2月28日
1980年27日
1979年23日
1960年2月24日
1953年30日
1936年2月29日
1884年3月31日
18 1877年
7 1858
37 1767
20 1762年
11 1740
8 1722
6 1693
32 1692
10 1662年
9 1576
19 1308
2 1266
1175
38 63
dtype:int64

total_val_count是一個系列。 系列的索引是dataset[attr]的值,而系列中的值是dataset[attr]中相關值出現的次數。

當您使用total_val_count[i]為Series編制索引時,Pandas將在索引中查找i並返回關聯的值。 換句話說, total_val_count[i]是按索引值而不是total_val_count[i]索引。 將系列視為從索引到值的映射。 當使用普通索引時,例如total_val_count[i] ,它的行為更像是dict不是list

您收到一個KeyError,因為0不是索引中的值。 total_val_count.iloc[i]索引,請使用total_val_count.iloc[i]

話雖這么說,不建議for i in range(len(total_val_count.index))使用for i in range(len(total_val_count.index))或者不建議for i in range(len(total_val_count))相同的處理。 代替

for i in range(len(total_val_count)):
    print(total_val_count.iloc[i])

你可以用

for value in total_val_count.values:
    print(value)

這更具可讀性,並且允許您將所需的值作為變量value來訪問,而不是麻煩的total_val_count.iloc[i]

這是一個示例,顯示了如何遍歷值,鍵,鍵和值兩者:

import pandas as pd

s = pd.Series([1, 2, 3, 2, 2])
total_val_count = s.value_counts()

print(total_val_count)
# 2    3
# 3    1
# 1    1
# dtype: int64

for value in total_val_count.values:
    print(value)
    # 3
    # 1
    # 1

for key in total_val_count.keys():
    print(key)
    # 2
    # 3
    # 1

for key, value in total_val_count.iteritems():
    print(key, value)
    # (2, 3)
    # (3, 1)
    # (1, 1)

for i in range(len(total_val_count)):
    print(total_val_count.iloc[i])
    # 3
    # 1
    # 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM