首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将嵌套字典转换为数据帧并与另一个数据帧连接

将嵌套字典转换为数据帧并与另一个数据帧连接
EN

Stack Overflow用户
提问于 2020-01-15 21:24:29
回答 1查看 44关注 0票数 0

我有一本字典,看起来像这样:

代码语言:javascript
复制
my_dict = {'Red': {'Red': {'A': 91, 'B': 279, 'C': 296, 'D': 516}, 'Amber': {'A': 229, 'B': 273, 'C': 273, 'D': 529}}, 'Amber': {'Red': {'A': 191, 'B': 323, 'C': 329, 'D': 634},  'Green': {'A': 137, 'B': 212, 'C': 222, 'D': 430}}, 'Green': {'Red': {'A': 50, 'B': 254, 'C': 299, 'D': 463}, 'Amber': {'A': 84, 'B': 235, 'C': 244, 'D': 364}}}

但要大得多。

我有一个数据帧df1,看起来像下面,但是更大(几百行),有更多的列(10s)

代码语言:javascript
复制
C1    C2      dim1 unique_no
Amber Red     F     1
Red   Green   T     2    
Green Red     T     3 
Red   Amber   F     4 
Red   Red     T     5 
Green Amber   T     6

我喜欢根据my_dict中的值在df1中创建A、B、C和D列

我认为将my_dict转换为数据帧并合并数据帧将是实现这一目标的一种方法

我尝试使用以下命令将my_dict转换为数据帧

代码语言:javascript
复制
df2 = pd.concat({k: pd.DataFrame(v).T for k, v in my_dict.items()}, axis=0)

df2显示为:

代码语言:javascript
复制
              A    B    C    D
Amber Red    191  323  329  634
      Green  137  212  222  430
Green Red     50  254  299  463
      Amber   84  235  244  364
Red   Red     91  279  296  516
      Amber  229  273  273  529

我希望df2是这样的:

代码语言:javascript
复制
  C1    C2    A    B    C    D
Amber Red    191  323  329  634
Amber Green  137  212  222  430
Green Red     50  254  299  463
Green Amber   84  235  244  364
Red   Red     91  279  296  516
Red   Amber  229  273  273  529

这样我就可以和df2一起加入df1

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-15 21:38:22

使用reset_index():

一种方法是使用reset_index()并将两个新列命名为'C1‘和'C2’

示例:

代码语言:javascript
复制
df2.index.rename(['C1', 'C2'], inplace=True) # rename the index of df2 'C1' and 'C2'
df2 = df2.reset_index() # reset index

然后你就可以加入df1和df2了。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59752365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档