如何将字典转换成字典?

2024-06-16 09:18:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含键和值列表的字典。我想做一个简单的示例,但是,我很难将列表项分成单独的行。我当前的方法创建了一个df,但将值保存在一个列表中。如何将它们拉出并添加为单独的行?你知道吗

d = {'Car':['1','2','3'],
     'Chicken legs':['4','5','6'],
     'Coronary artery bypass graft surgery':['7','8','9','10','11','12']}

df = pd.DataFrame({'Thing':list(d.keys()), 'Values':list(d.values())})

    Thing                                   Values
0   Car                                     [1, 2, 3]
1   Chicken_legs                            [4, 5, 6]
2   Coronary artery bypass graft surgery    [7, 8, 9, 10, 11, 12]

预期最终结果:

     Thing                                  Values
0  Car                                      1
1  Car                                      2
2  Car                                      3
3  Chicken_legs                             4
4  Chicken_legs                             5
5  Chicken_legs                             6
6  Coronary artery bypass graft surgery     7
7  Coronary artery bypass graft surgery     8
8  Coronary artery bypass graft surgery     9
9  Coronary artery bypass graft surgery     10
10 Coronary artery bypass graft surgery     11
11 Coronary artery bypass graft surgery     12

Tags: 示例df列表字典carlistvaluesthing
2条回答

把你的字典翻成正确的东西:

In [3]: pd.DataFrame({'Thing':k, 'Values':v} for k,V in d.items() for v in V)
Out[3]:
                                   Thing Values
0   Coronary artery bypass graft surgery      7
1   Coronary artery bypass graft surgery      8
2   Coronary artery bypass graft surgery      9
3   Coronary artery bypass graft surgery     10
4   Coronary artery bypass graft surgery     11
5   Coronary artery bypass graft surgery     12
6                                    Car      1
7                                    Car      2
8                                    Car      3
9                           Chicken legs      4
10                          Chicken legs      5
11                          Chicken legs      6

这种解决办法不如公认的解决办法胡安帕.阿里维拉加. 你知道吗

pd.concat([ pd.DataFrame({'Thing': df['Thing'][i], 'Values': pd.Series(df.Values[i])}) for i in range(len(df)) ])

                                  Thing Values
0                                   Car      1
1                                   Car      2
2                                   Car      3
0                          Chicken legs      4
1                          Chicken legs      5
2                          Chicken legs      6
0  Coronary artery bypass graft surgery      7
1  Coronary artery bypass graft surgery      8
2  Coronary artery bypass graft surgery      9
3  Coronary artery bypass graft surgery     10
4  Coronary artery bypass graft surgery     11
5  Coronary artery bypass graft surgery     12

相关问题 更多 >