大熊猫创建一列并从字典中为其分配值

时间:2019-09-24 16:58:56

标签: python python-3.x pandas dataframe

我有一本这样的字典

{"regions":[
   {"name": "South America", "code": "SA01,SA02,SA03"},
   {"name": "Asia Pacific", "code": "AP01,AP02,AP03"}
]}

我有一个这样的df,

id    code
1     SA01
2     SA02
3     SA03
4     AP01
5     AP02
6     AP03

我喜欢在region中创建一列df,其值将基于code中的regions值,因此结果看起来像

id    code    region
1     SA01    South America
2     SA02    South America
3     SA03    South America
4     AP01    Asia Pacific
5     AP02    Asia Pacific
6     AP03    Asia Pacific

我想知道什么是最好的方法。

2 个答案:

答案 0 :(得分:6)

您可以重新定义字典(此处为def solve(request): print('its working') blob = request.FILES['audio_data'] print(blob) return render(request,'display.html') ,以便为出现在字符串中的每个代码创建一个单独的d条目,并使用它来映射code:region列中的值:

code

d_ = {code:sd['name'] for sd in d['regions'] for code in sd['code'].split(',')} 
# {'SA01': 'South America', 'SA02': 'South America', 'SA03': 'South America',...
df['region'] = df.code.map(d_)

答案 1 :(得分:1)

此示例不带任何修改即可获取当前数据集。我相信可以由具有更多熊猫经验的人来完善。

import pandas as pd

mydict = {"regions":[
{"name": "South America", "code": "SA01,SA02,SA03"},
{"name": "Asia Pacific", "code": "AP01,AP02,AP03"}
]}

col_names_regions = ['code', 'region name']
df_regions = pd.DataFrame(columns=col_names_regions)

for key, values in mydict.items():
  for value in values:
    codes = value.get('code')
    name = value.get('name')
    for code in codes.split(','):
      df1 = {'code': code, 'region name': name}
      df_regions = df_regions.append(df1, ignore_index=True)

print (df_regions)
# output 
   code    region name
0  SA01  South America
1  SA02  South America
2  SA03  South America
3  AP01   Asia Pacific
4  AP02   Asia Pacific
5  AP03   Asia Pacific