【发布时间】:2020-01-09 20:08:42
【问题描述】:
我有一个名为differ_vt 的数据框,我想应用groupby 并在'CO_FIPS' 和'FLD_ZONE' 列上进行汇总:
FLD_ZONE AWPOP_1 Area_SQMI_1 AWHU_1 AWPOP_2 Area_SQMI_2 AWHU_2 CO_FIPS
0 A 18.1 23.1 101.3 3.0 23.1 3.1 50001
1 AE 6.7 13.5 58.6 0.03 13.5 4.8 50001
2 N 1.3 1.2 23.0 7.1 1.2 8.3 50001
3 X 0.0 38.5 0.0 0.0 38.5 0.0 50001
4 X500 4.6 44.5 4.8 4.8 44.5 2.1 50001
我为分组和汇总的数据创建了一个新的数据框:
vt_sum = differ_vt_outer.groupby(['CO_FIPS', 'FLD_ZONE']).agg({'AWPOP_1': 'sum', 'Area_SQMI_1': 'sum', 'AWHU_1': 'sum', 'AWPOP_2': 'sum', 'Area_SQMI_2': 'sum', 'AWHU_2': 'sum'})
新的数据框如下所示:
vt_sum.head()
>
AWPOP_1 Area_SQMI_1 AWHU_1 AWPOP_2 Area_SQMI_2 AWHU_2
CO_FIPS FLD_ZONE
50001 A 2335.8 79.7 1095.1 2334.0 79.7 1094.1
AE 2134.5 74.1 1179.5 2134.5 74.1 1179.5
N 96.8 0.2 13.1 94.0 0.2 11.7
X 68119.7 1333.2 30623.9 68115.5 1333.2 30621.9
X500 339.2 4.4 149.8 339.2 4.4 149.8
50003 A 1006.9 4.8 542.7 1006.9 4.8 542.7
AE 2441.6 2.3 1265.0 2441.6 2.3 1265.0
AO 3.1 0.0 3.5 3.1 0.0 3.5
X 34896.6 700.4 20075.2 34896.6 700.4 20075.2
现在,我想将汇总数据框与原始 diff_vt 数据框相关联,并根据汇总值创建新列。例如,对于CO_FIPS = 50001 和FLD_ZONE = A,我想添加一个名为Tot_AWPOP_1 的列,其值为2335.8。
differ_vt_outer['Tot_AWPOP_1'] = vt_sum['AWPOP_1'].values
但是,当我运行它时,我得到了错误:
ValueError:值的长度与索引的长度不匹配
我该如何解决这个问题?
【问题讨论】:
标签: python-3.x pandas dataframe pandas-groupby