Я уже некоторое время пытаюсь разобраться со следующей проблемой. Надеюсь, кто-нибудь может мне помочь. Я пытаюсь суммировать количество счетов (например, число рождений) для разных областей. Как показано в таблице ниже, у меня есть набор данных, в котором, например, области 1 и 2 объединяются в объединенной области 4. Area3 не затрагивается.
import pandas as pd
data1 = {
"OldArea" : ['area1','area2','area3'],
"numbercount" : [10,20,5],
"FusedIntoArea" : ['area4','area4','area3']
}
frame1 = pd.DataFrame(data1, columns=['OldArea', 'FusedIntoArea', 'numbercount'])
frame1
Я хочу добавить счетчик чисел для area1 и area2 (10 + 20) в область 4 (30). Число для area3 остается прежним (5). Это работает с использованием groupby и sum для получения pd.series series1, как показано ниже.
series1 = frame1.groupby(['FusedIntoArea'])['numbercount'].sum()
series1
Проблема в том, что я хочу расширить эту групповую операцию и суммировать операции для нескольких слияний областей в течение нескольких лет. Расширенные данные слияния для областей показаны в кадре3. Area1 и area2 сливаются, образуя area4 (как и раньше), но теперь их стало больше: через год после этого area4 и area3 сливаются, образуя area5, тогда как area6 остается неизменной на протяжении многих лет. Данные слияния представлены в формате, аналогичном приведенному ниже, в рамке 2:
data2 = {
'year0' : ['area1', 'area2', 'area3', 'area6'],
'year1' : ['area4', 'area4', 'area3', 'area6'],
'year2' : ['area5', 'area5', 'area5', 'area6']
}
frame2 = pd.DataFrame(data2, columns = ['year0', 'year1', 'year2'])
frame2
Данные для счета чисел (например, рождения до слияния или с момента слияния и далее) теперь находятся в отдельном кадре, frame3.
data3 = {
"area" : ['area1', 'area2','area3', 'area4', 'area5', 'area6'],
"numbercount" : [10,20,5,35, 15,25],
}
frame3 = pd.DataFrame(data3, columns=['area', 'numbercount'])
frame3
Результат, который я пытаюсь получить, - это общее число (TotalNumber) для вновь сформированных областей 5 (1 + 2 + 3 + 4 + 5 после слияния) и 6 (без изменений по годам), как показано в кадре 4. Буду признателен за любую оказанную помощь. Должен ли я использовать операцию объединения или слияния? Заранее спасибо.
data4 = {
"OldAreas" :[1,2,3,4,5,6],
"NewArea" : ['area5','area5','area5','area5','area5','area6'],
"TotalNumber" : [85,85,85,85,85, 25]
}
frame4 = pd.DataFrame(data4, columns=['NewArea', 'TotalNumber'])
frame4