Python Pandas DataFrame:如何合并具有多个索引和单个索引的DataFrame

Python Pandas DataFrame:如何合并具有多个索引和单个索引的DataFrame,python,pandas,dataframe,join,merge,Python,Pandas,Dataframe,Join,Merge,我在合并2个dataframe和dataframe1中的多个索引以及dataframe2中的单个索引时遇到问题。我有 数据帧1 ID description 1 A 1 B 1 C 2 D 2 E 数据框架2 ID price 1 100 2 50 预期产量 ID description price 1 A 100

我在合并2个dataframe和dataframe1中的多个索引以及dataframe2中的单个索引时遇到问题。我有 数据帧1

ID    description
1          A
1          B
1          C
2          D
2          E
数据框架2

ID     price
1       100
2       50 
预期产量

ID    description    price
1         A           100
1         B           NaN
1         C           NaN
2         D           50
2         E           NaN

谢谢你,我的英语很抱歉。

你可以使用带有布尔值的
.loc
删除重复项,并使用
map
df2
查找值

这种方法假设您只有一个目标列

df1.loc[df1.drop_duplicates(subset=['ID'],keep='first').index, 
                            'price'] =  df1['ID'].map(df2.set_index('ID')['price'])


   ID description  price
0   1           A  100.0
1   1           B    NaN
2   1           C    NaN
3   2           D   50.0
4   2           E    NaN
.groupby('id').cumcount()
&
.merge
另一个更动态的方法是在ID上创建一个序列,然后在两个键上连接

df1['sequence'] = df1.groupby('ID').cumcount()
df2['sequence'] = df2.groupby('ID').cumcount()

df3 = pd.merge(df1,df2,on=['ID','sequence'],how='left').drop('sequence',1)



有什么方法可以用第二种方法隐藏“序列”吗?@jong hyeon yep,我把它注释掉了,但是你可以
。把它放到合并中,我把它放在合并中,这样OP就能理解合并的逻辑
   ID description  price
0   1           A  100.0
1   1           B    NaN
2   1           C    NaN
3   2           D   50.0
4   2           E    NaN
print(df1)

   ID description  sequence
0   1           A         0
1   1           B         1
2   1           C         2
3   2           D         0
4   2           E         1

print(df2)

   ID  price  sequence
0   1    100         0
1   2     50         0