我有一個資料框,其中包含美國玉米產量值 ( maiz_a) 的值。資料按緯度和經度 (y和x) 組織,但也按州和縣組織。許多特定的緯度和經度都屬于同一個縣,這為同一個州和縣提供了許多重復的條目,但具有不同的值。這是一個例子:
x y maiz_a maiz_pct name_adm1 name_adm2
62748 -89.875000 41.625000 49642.6 0.000155 Illinois Whiteside
29499 -98.041667 40.791667 49621.1 0.000309 Nebraska Hamilton
28101 -98.208333 40.791667 48866.9 0.000462 Nebraska Hamilton
24910 -98.041667 40.958333 48741.3 0.000614 Nebraska Hamilton
28615 -97.958333 40.958333 48538.8 0.000765 Nebraska Hamilton
24697 -97.875000 40.791667 48536.3 0.000916 Nebraska Hamilton
64127 -89.791667 41.625000 48448.2 0.001067 Illinois Whiteside
name_adm1請注意“Nebraska”和name_adm2“Hamilton”的組合有多少。我想洗掉重復項,但根據maiz_aand將所有所述重復項加到一行中maiz_pct。此外,新格式化的資料框應該只包含 and 的第一個實體,x并且y顯然應該保留name_adm1and name_adm2。
uj5u.com熱心網友回復:
使用groupbyandagg
這允許您指定要如何聚合每個特定列。
df.groupby(['name_adm1', 'name_adm2'], as_index=False).agg(
{'x': 'first', 'y': 'first', 'maiz_a': 'sum', 'maiz_pct': 'sum'}
)
name_adm1 name_adm2 x y maiz_a maiz_pct
0 Illinois Whiteside -89.875000 41.625000 98090.8 0.001222
1 Nebraska Hamilton -98.041667 40.791667 244304.4 0.003066
uj5u.com熱心網友回復:
嘗試使用groupby和sum:
compacted_df = df.groupby(['name_adm1', 'name_adm2']).sum().reset_index()
輸出:
>>> compacted_df
name_adm1 name_adm2 x y maiz_a maiz_pct
0 Illinois Whiteside -179.666667 83.250000 98090.8 0.001222
1 Nebraska Hamilton -490.125000 204.291667 244304.4 0.003066
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/441200.html
標籤:python-3.x 熊猫 数据框
下一篇:合并字典中的鏈表
