我有一本这样的字典
{"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
我想知道什么是最好的方法。
答案 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