将Pandas Dataframe与索引值组合为列名

时间:2016-08-31 19:20:28

标签: python pandas dataframe

鉴于以下两个pandas DataFrames:

main_table = pd.DataFrame([[1, 'A'],
                           [2, 'B'],
                           [3,'C']],
                           columns=['id', 'label'])

extras_table = pd.DataFrame([[1, 'e1', 'e1_Val'], 
                             [1, 'e2', 'e2_Val'],
                             [2, 'e2', 'e2_Val2'],
                             [3, 'e1', 'e1_val3']], 
                             columns=['main_id', 'col_label', 'value'])

我想使用' main_id' extras_table列和' col_label'在main_table上创建其他列。即:

result:
   id label       e1        e2
0   1     A   e1_Val    e2_Val
1   2     B     None   e2_Val2
2   3     C  e1_val3      None

请注意,某些行可能没有所有新列。这在Pandas中是否可行,而不是迭代extras表,并添加新的列/值?

1 个答案:

答案 0 :(得分:3)

xdf = extras_table.set_index(['main_id', 'col_label']) \
    .unstack().value.reset_index('main_id')

main_table.merge(xdf, left_on='id', right_on='main_id').drop('main_id', axis=1)

enter image description here