我有一本这样的字典:
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)
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转换为数据框df2 = pd.concat({k: pd.DataFrame(v).T for k, v in my_dict.items()}, axis=0)
df2出现如下:
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像这样:
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
所以我可以将df1和df2一起加入
答案 0 :(得分:1)
一种方法是使用reset_index()并命名两个新列“ C1”和“ C2”
示例:
df2.index.rename(['C1', 'C2'], inplace=True) # rename the index of df2 'C1' and 'C2'
df2 = df2.reset_index() # reset index
然后您可以加入df1和df2。
希望这会有所帮助。