我有一个数据框,用于保存特定聚合级别的数据 - 让我们将其称为区域性。
我还有一个解释这些区域如何形成的词典。像这样:
map = {'Alabama': 'region_1', 'Arizona': 'region_1', 'Arkansas': 'region_2' ... }
其区域内每个州的一组权重,存储为一系列:
Alabama .25
Arizona .75
Arkansas .33
....
是否有一种有效的方法来应用此分解图以在州一级获取新的数据框?
聚合很简单:
df_regional = df_states.groupby(map).sum()
但我怎么能分解?
答案 0 :(得分: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
答案 1 :(得分:0)
假设有两个数据帧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