我期待在这里迭代我的两个 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/