将多索引数据框与Int64Index数据框结合

问题描述

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

结果=

MultiIndex([(1,'HK_MN001'),(2,(3,'HK_MN002'),(4,'HK_MN003'),(5,'HK_MN004'),(6,'HK_MN005'),(7,(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.

结果数据框为:

enter image description here

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)

enter image description here

解决方法

我认为您都需要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)