0

特定のレベルの集計でデータを保持するデータフレームがあります-それを地域と呼びましょう。

これらの領域がどのように形成されるかを説明する辞書もあります。このようなもの:

map = {'Alabama': 'region_1', 'Arizona': 'region_1', 'Arkansas': 'region_2' ... }

そして、その地域内の各州の重みのセットは、シリーズとして保存されます:

Alabama    .25
Arizona    .75
Arkansas   .33
....

この分解マップを適用して、州レベルで新しいデータフレームを取得する効率的な方法はありますか?

集計は簡単です。

df_regional = df_states.groupby(map).sum()

しかし、どうすれば分解できますか?

4

2 に答える 2

0

次の構造を持つ2 つのデータフレームdf_statesと を想定します。df_regional

In [36]: df_states
Out[36]: 
          Weight    Region
Alabama     0.25  region_1
Arizona     0.75  region_1
Arkansas    0.33  region_2

In [37]: df_regional
Out[37]: 
          Value
region_1    100
region_2     80

pandas.merge有用と思われる方法でデータを整理していますか?

In [39]: df = pandas.merge(df_states, df_regional, left_on='Region', right_index=True)

In [40]: df
Out[40]: 
          Weight    Region  Value
Alabama     0.25  region_1    100
Arizona     0.75  region_1    100
Arkansas    0.33  region_2     80

In [41]: df.Weight * df.Value
Out[41]: 
Alabama     25.0
Arizona     75.0
Arkansas    26.4
于 2012-09-03T21:39:36.853 に答える
0
In [238]: map = {'Alabama': 'region_1', 'Arizona': 'region_1', 'Arkansas': 'region_2'}

In [239]: weigths = pandas.Series([.25, .75, .33], index=['Alabama', 'Arizona', 'Arkansas'])

In [240]: df_states = pandas.DataFrame({'map': pandas.Series(map), 'weigths': weigths})

In [241]: df_states
Out[241]:
               map  weigths
Alabama   region_1     0.25
Arizona   region_1     0.75
Arkansas  region_2     0.33

In [242]: df_regional = df_states.groupby('map').sum()

In [243]: df_regional
Out[243]:
          weigths
map
region_1     1.00
region_2     0.33
于 2012-09-03T11:19:12.323 に答える