2017-05-20 6 views
3

区間型では、中点、左または中央値を連続で見つけることができますか?例えばパンダの区間データ型 - 中点、左、中点などを見つける

  1. 間隔データ型のカラムを作成し、これらの間隔をある程度集約計算を行う:

    df_Stats = df.groupby(['month',pd.cut(df['Distances'], np.arange(0, 135,1))]).agg(aggregations) 
    

これはインターバル列のデータ型とdf_Statsを返します。 df['Distances']

  1. 今私は、一連の機能を使用して、これらの集計の結果に区間の左端を関連付ける:

    df['LeftEnd'] = df['Distances'].left 
    

しかし、私は賢明なこの要素を実行することができます。

df.loc[0]['LeftEnd'] = df.loc[0]['Distances'].left 

これは動作します。思考?

答えて

1

したがってpd.cut()は、IntervalIndexをカテゴリとして使用して、CategoricalIndexを実際に作成します。あなたは、単にアクセス、その後、(彼らは列であればこれも動作します)IntervalIndexにそれらを強制することができ

In [13]: df = pd.DataFrame({'month': [1, 1, 2, 2], 'distances': range(4), 'value': range(4)}) 

In [14]: df 
Out[14]: 
    distances month value 
0   0  1  0 
1   1  1  1 
2   2  2  2 
3   3  2  3 

In [15]: result = df.groupby(['month', pd.cut(df.distances, 2)]).value.mean() 

In [16]: result 
Out[16]: 
month distances  
1  (-0.003, 1.5] 0.5 
2  (1.5, 3.0]  2.5 
Name: value, dtype: float64 

In [17]: pd.IntervalIndex(result.index.get_level_values('distances')).left 
Out[17]: Float64Index([-0.003, 1.5], dtype='float64') 

In [18]: pd.IntervalIndex(result.index.get_level_values('distances')).right 
Out[18]: Float64Index([1.5, 3.0], dtype='float64') 

In [19]: pd.IntervalIndex(result.index.get_level_values('distances')).mid 
Out[19]: Float64Index([0.7485, 2.25], dtype='float64') 
関連する問題