python - Python 中迭代两个键

标签 python json pandas

我期待在这里迭代我的两个 key (型号和经销商)并将其记录在 csv 中。也许因为我是 py 的新手,或者是我习惯使用 sql 的方式,所以我不太明白循环两个键并获取数据的想法。目前我正在做一个基本循环来提取数据,任何关于如何解决这个问题的见解都会非常有帮助

我的代码:

for x in data['models']:
   for y in data['models'][x]:
       fetch={'brand': x, 'model':y}
       resul.append(fetch)

for a in data['dealers']:
   for b in data['dealers'][a]:
       fetch={'brand': a, 'dealer':b}

我的输入:

data={ 
 "models" : 
       {
          "ford" : [ "ranger","mustang","ecosport","ikon"],
        "nissan" : ["gt","terrano"],
        "tesla" : ["cyber truck","model x","model s","model s2"],
        "honda" : ["civic", "accord"]
        },
    
 "dealers":
        {
         "tesla": [ "california", "newyork", "ohio"],
         "ford" : ["new jersey","hongkong","beijing","delhi","telaviv","ottawa"],
         "gm" : ["new york","washington dc"],
         "nissan" : ["dubai","saudi arabia"]
         }
}

输出:

| brand | models | dealers|
|-------|--------|---------|
|ford   | ranger | new jery|
|ford   | mustang| hongkong |
|ford   | ecosport| beijing |
|ford   | ikon    | delhi|
|ford   |         | telaviv |
|ford   |         | ottawa |
|nissan | gt      | dubai |
|nissan | terrano | saudi arabia|
|tesla  |cyber truck| california|
|tesla  | model x   | newyork   |
|tesla  | model s   | ohio      |
|tesla  | model s2  |           |
|honda  | civic     |           |
|honda  | accord    |           |
|gm     | new york  |           |
|gm     | washington dc|        |

最佳答案

由于您已使用 pandas 标记了问题,因此这是一种可能的方法,它显着涉及大量 pandas 操作,包括 stack爆炸并使用unstack reshape

df = pd.DataFrame(data).stack().explode().to_frame()
df = df.set_index(df.groupby(level=[0, 1]).cumcount(), append=True)[0]\
       .unstack(level=1).droplevel(1).rename_axis('brand').reset_index()

print(df)

     brand        dealers       models
0     ford     new jersey       ranger
1     ford       hongkong      mustang
2     ford        beijing     ecosport
3     ford          delhi         ikon
4     ford        telaviv          NaN
5     ford         ottawa          NaN
6       gm       new york          NaN
7       gm  washington dc          NaN
8    honda            NaN        civic
9    honda            NaN       accord
10  nissan          dubai           gt
11  nissan   saudi arabia      terrano
12   tesla     california  cyber truck
13   tesla        newyork      model x
14   tesla           ohio      model s
15   tesla            NaN     model s2

关于python - Python 中迭代两个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68162794/

相关文章:

python - 使用 virtualenv 和 flask 运行 uwsgi

python - 获取 GeoJSONDataSource 中所选项目的属性

python - 使用嵌套字典替换 pandas 数据框中的值

python - 将 pandas Dataframes 转换为 PDF 时增加特定列的宽度

python - Pandas 排序行值

python - 将字符串总和打印为 float

python - 在列表中搜索一对整数的算法

java - 如何使用 Java 手动展平 Elasticsearch 嵌套的 JSON 文档?

java - 如何将 json 内容从 jackson 流式传输到 org.apache.http.entity.InputStreamEntity?

c# - 将 JSON 数组反序列化为字符串数组