如何解决如何将不对称字典转换为pandas DataFrame
dict_circles = {
'radii': [1,5,10,15],'feature_group': [1,'lat_long': {'city1': [lat1,long1],'city2': [lat2,long2]
}
}
我正在使用上面的字典,想通过分割经纬度值然后复制它们以在新的DF中创建对称性来创建以下熊猫DataFrame:
**radii** **feature_group** **lat** **long**
city1 1 1 lat1 long1
city2 1 1 lat2 long2
city1 5 5 lat1 long1
city2 5 5 lat2 long2
city1 10 10 lat1 long1
city2 10 10 lat2 long2
city1 15 15 lat1 long1
city2 15 15 lat2 long2
据我所知,我将需要递归[isinstance(data,type)或其他..]函数来访问嵌套在内部字典'lat_long'中的列表,并且可能还使用'pd.DataFrame.from_dict ()”,也许还有字典理解。解决方案使我逃脱了。如果有更好的策略,请提出建议。
解决方法
这是使用dict_circles
的一种方法:
import pandas as pd
# I multiplied each feature group by 10,to distinguish vs radii
dict_circles = {
'radii': [1,5,10,15],'feature_group': [10,50,100,150],'lat_long': {'city1': ['lat1','long1'],'city2': ['lat2','long2']
}
}
# convert dict_circles (which is a nested dict) to list-of-tuples
tuples = [(city,r,fg,lat,lon)
for r,fg in zip(dict_circles['radii'],dict_circles['feature_group'])
for city,(lat,lon) in dict_circles['lat_long'].items()
]
# the list-of-tuples is compatible with the DataFrame constructor
df = pd.DataFrame(tuples,columns=('city','radii','feature_group','lat','long'))
print(df)
city radii feature_group lat long
0 city1 1 10 lat1 long1
1 city2 1 10 lat2 long2
2 city1 5 50 lat1 long1
3 city2 5 50 lat2 long2
4 city1 10 100 lat1 long1
5 city2 10 100 lat2 long2
6 city1 15 150 lat1 long1
7 city2 15 150 lat2 long2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。