一段时间以来,我一直在努力解决以下问题。希望有人能帮我。我试着把不同地区的数字(如出生人数)加起来。如下表所示,我有一个数据集,例如,区域1和区域2在融合区域4中合并在一起。区域3不受影响。在
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
我想把1区和2区的数字数(10+20)加到4区(30)。区域3的数字计数保持不变(5)。这是通过使用groupby和sum来获得pd系列系列1如下所示。在
^{pr2}$问题是我想将这种groupby和sum操作扩展到几年内的几个区域融合。区域的扩展融合数据如框架3所示。区域1和区域2熔合形成区域4(与之前一样),但现在还有更多:在之后的一年中,区域4和区域3融合形成区域5,而区域6则在这些年中保持不变。融合数据的格式如下图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
数字计数的数据(例如融合前的出生或融合后的出生)现在在一个单独的框架中,即框架3。在
data3 = {
"area" : ['area1', 'area2','area3', 'area4', 'area5', 'area6'],
"numbercount" : [10,20,5,35, 15,25],
}
frame3 = pd.DataFrame(data3, columns=['area', 'numbercount'])
frame3
我试图得到的结果是新形成的区域5(融合后的1+2+3+4+5)和6(多年不变)的总数(总数),如框架4所示。任何帮助都是非常感谢的。我应该使用join或merge操作吗?提前谢谢。在
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
可以使用dictionnaries映射现有数据。在
首先创建一个词汇表,它告诉你每个区域在哪个区域融合:
这样,您就可以通过在
^{pr2}$frame3['area']
上使用replace
来创建NewArea
列(请注意,replace
允许保留字典键中不存在的值,如果您更喜欢缺少值,请使用map
)然后,您可以为值对应的每个区域创建第二个字典式编码,并将其映射到列
NewArea
:相关问题 更多 >
编程相关推荐