将具有值列表的字典转换为数据框

use*_*373 14 python dictionary pandas

说我有三本字典

dictionary_col2
{'MOB': [1, 2], 'ASP': [1, 2], 'YIP': [1, 2]}
Run Code Online (Sandbox Code Playgroud)
 dictionary_col3

{'MOB': ['MOB_L001_R1_001.gz',
         'MOB_L002_R1_001.gz'],
 'ASP': ['ASP_L001_R1_001.gz',
         'ASP_L002_R1_001.gz'],
 'YIP': ['YIP_L001_R1_001.gz',
         'YIP_L002_R1_001.gz']}

Run Code Online (Sandbox Code Playgroud)
dictionary_col4

{'MOB': ['MOB_L001_R2_001.gz',
         'MOB_L002_R2_001.gz'],
 'ASP': ['ASP_L001_R2_001.gz',
         'ASP_L002_R2_001.gz'],
 'YIP': ['YIP_L001_R2_001.gz',
         'YIP_L002_R2_001.gz']}

Run Code Online (Sandbox Code Playgroud)

我想将上述字典转换为数据框。我尝试了以下方法

df = pd.DataFrame([dictionary_col2, dictionary_col3, dictionary_col4])df数据帧的样子,

                ASP MOB YIP
0   [1, 2]  [1, 2]  [1, 2]
1   [ASP_L001_R1_001.gz, ASP_L002_R1_001.gz]    [MOB_L001_R1_001.gz, MOB_L002_R1_001.gz]    [YIP_L001_R1_001.gz, YIP_L002_R1_001.gz]
2   [ASP_L001_R2_001.gz, ASP_L002_R2_001.gz]    [MOB_L001_R2_001.gz, MOB_L002_R2_001.gz]    [YIP_L001_R2_001.gz, YIP_L002_R2_001.gz]
Run Code Online (Sandbox Code Playgroud)

我的目标是建立一个包含以下各列的数据框:

    col1  col2 col3              col4 
    MOB   1   MOB_L001_R1_001.gz MOB_L001_R2_001.gz      
    MOB   2   MOB_L002_R1_001.gz MOB_L002_R2_001.gz 
    ASP   1   ASP_L001_R1_001.gz ASP_L001_R2_001.gz 
    ASP   2   ASP_L002_R1_001.gz MOB_L002_R2_001.gz 
    YIP   1   YIP_L001_R1_001.gz YIP_L001_R2_001.gz
    YIP   2   YIP_L002_R1_001.gz YIP_L002_R2_001.gz
Run Code Online (Sandbox Code Playgroud)

任何帮助/建议表示赞赏!

eum*_*iro 7

pd.DataFrame({'col2': pd.DataFrame(col2).unstack(),
              'col3': pd.DataFrame(col3).unstack(),
              'col4': pd.DataFrame(col4).unstack()}).reset_index(level=0)
Run Code Online (Sandbox Code Playgroud)

退货

  level_0  col2                col3                col4
0     ASP     1  ASP_L001_R1_001.gz  ASP_L001_R2_001.gz
1     ASP     2  ASP_L002_R1_001.gz  ASP_L002_R2_001.gz
0     MOB     1  MOB_L001_R1_001.gz  MOB_L001_R2_001.gz
1     MOB     2  MOB_L002_R1_001.gz  MOB_L002_R2_001.gz
0     YIP     1  YIP_L001_R1_001.gz  YIP_L001_R2_001.gz
1     YIP     2  YIP_L002_R1_001.gz  YIP_L002_R2_001.gz
Run Code Online (Sandbox Code Playgroud)