我有一个 df,它有 3 列,可以说 Region、Country 和 AREA_CODE。
Region Country AREA_CODE
===================================
AMER US A1
AMER CANADA A1
AMER US B1
AMER US A1
我想获得每个区域下每个国家/地区的 AREA_CODE 列表等输出,并以“ALL”作为列表值。类似的东西
{
"AMER": {
"US": ["ALL", "A1", "B1"],
"CANADA": ["ALL", "A1"]
}
}
到目前为止,我已尝试按地区和国家/地区列进行分组,然后尝试按 AREA_CODE 对其进行分组和聚合,但它抛出错误
df.drop_duplicates().groupby(["Region", "Country"]).groupby("Country")['AREA_CODE'].agg(lambda x: ["ALL"]+sorted(x.unique().tolist())).to_dict()
有人可以帮我解决这个问题吗?
谢谢,
groupby
。
这在字典理解中最容易完成:
out = {k: {k2: ['ALL']+sorted(v2.unique().tolist())
for k2, v2 in v.groupby('Country')['AREA_CODE']
}
for k, v in df.drop_duplicates().groupby('Region')
}
输出:
{'AMER': {'CANADA': ['ALL', 'A1'],
'US': ['ALL', 'A1', 'B1'],
},
}