2017-02-01 12 views
2

パンダでは、統計を取得するためにvalue_counts()メソッドを使用することがよくあります。パンダの対応するインデックスvalue_counts()メソッド

例えば、私は以下のようにvalue_counts()の結果を得ることができます。

male  7825 
female 6764 

(オスとメス)2枚のラベルに対応するデータフレームのインデックスを取得する任意の組み込み関数があります。

期待される結果:male_indices = [1,3,5,6,7, ..., 14589]でLEN(male_indices)= 7825

+1

を考えてみましょう – EdChum

答えて

1

これは何ですかgroupbyです。あなただけ.index` [性別 '] ==' 男性 '[DF'] `DFを行うことができます例のデータフレームdf

np.random.seed([3,1415]) 
df = pd.DataFrame(dict(sex=np.random.choice(('male', 'female'), 10))) 
print(df) 

     sex 
0 male 
1 female 
2 male 
3 female 
4 male 
5 male 
6 female 
7 male 
8 female 
9 female 

使用groupby.groups

df.groupby('sex').groups 

{'female': Int64Index([1, 3, 6, 8, 9], dtype='int64'), 
'male': Int64Index([0, 2, 4, 5, 7], dtype='int64')} 
0

は、ここでデータフレーム内の所与の列内の指定されたグループに対応するインデックスを返す最小、幾分ロバスト関数の:

# create some data 
d = pd.DataFrame({'sex': ['male', 'male', 'female', 'male', 'female', 'female', 'male'], 'age': [23, 24, 20, 32, 45, 43, 32]}) 

# returns a dictionary with group names as keys and indices corresponding 
# to those groups as values (can just use `list` or `set` to avoid pandas indexes 
def get_indices(df, col): 
    return {group: df[df[col] == group].index for group in set(df[col])} 

# test it out 
get_indices(d, 'sex') 
Out[178]: 
{'female': Int64Index([2, 4, 5], dtype='int64'), 
'male': Int64Index([0, 1, 3, 6], dtype='int64')} 
関連する問題