我有一本字典,看起来像这样:
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这样我就可以和df2一起加入df1
发布于 2020-01-15 21:38:22
使用reset_index():
一种方法是使用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了。
希望这能有所帮助。
https://stackoverflow.com/questions/59752365
复制相似问题