【问题标题】:combine multiindex dataframe with Int64Index dataframe将多索引数据帧与 Int64Index 数据帧组合
【发布时间】:2020-12-21 08:30:26
【问题描述】:

我有一个带有多索引的数据框

结果 =

MultiIndex([(1, 'HK_MN001'),
            (2, 'HK_MN001'),
            (3, 'HK_MN002'),
            (4, 'HK_MN003'),
            (5, 'HK_MN004'),
            (6, 'HK_MN005'),
            (7, 'HK_MN005'),
            (8, 'HK_MN005')],
           names=['ID1', 'ID2'])

另一个带索引的数据框:

photo_df:

Int64Index([1, 2, 3, 4, 5, 6, 7, 8], dtype='int64', name='ID1')

我想连接两个数据框,但它给了我错误: 代码:

result = pd.concat([result,photo_df], axis = 1,sort=False)
 
error:
"Can only union MultiIndex with MultiIndex or Index of tuples, "

NotImplementedError: Can only union MultiIndex with MultiIndex or Index of tuples, try mi.to_flat_index().union(other) instead.

结果数据框是:

photo_df 数据帧是:

   PhotoID                          raw_photo
0        1  HK_MN001_DSC_2160_161014Ushio.JPG
1        2  HK_MN001_DSC_2308_161014Ushio.JPG
2        3  HK_MN002_DSC_2327_161014Ushio.JPG
3        4  HK_MN003_DSC_1474_181015Ushio.jpg
4        5  HK_MN004_DSC_1491_181015Ushio.jpg
5        6  HK_MN005_DSC_1506_181015Ushio.JPG
6        7  HK_MN005_DSC_1527_181015Ushio.JPG
7        8  HK_MN005_DSC_1528_181015Ushio.jpg

必需的输出数据帧:(如果可能,删除索引 = Id1)

【问题讨论】:

    标签: python-3.x pandas dataframe concat multi-index


    【解决方案1】:

    我认为你需要DataFrames创建MultiIndex

    photo_df = photo_df.set_index('PhotoID', drop=False)
    photo_df.columns = pd.MultiIndex.from_product([photo_df.columns, ['']])
    print (photo_df)
            PhotoID                          raw_photo
                                                      
    PhotoID                                           
    1             1  HK_MN001_DSC_2160_161014Ushio.JPG
    2             2  HK_MN001_DSC_2308_161014Ushio.JPG
    3             3  HK_MN002_DSC_2327_161014Ushio.JPG
    4             4  HK_MN003_DSC_1474_181015Ushio.jpg
    5             5  HK_MN004_DSC_1491_181015Ushio.jpg
    6             6  HK_MN005_DSC_1506_181015Ushio.JPG
    7             7  HK_MN005_DSC_1527_181015Ushio.JPG
    8             8  HK_MN005_DSC_1528_181015Ushio.jpg
    
    
    
    #second level ID2 is column
    result = pd.concat([result.reset_index(level=1),photo_df], axis = 1,sort=False)
    

    【讨论】:

    • @KrupaliMistry - 嗯,可以看看resultphoto_df 样本数据的样子吗?
    • 我可以从多索引数据帧转换为单索引数据帧吗?喜欢的索引应该是ID2
    • @KrupaliMistry - 你认为最后一段解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 2021-01-10
    • 2021-01-12
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 2019-08-12
    相关资源
    最近更新 更多