Python Pandas DataFrame:如何合并具有多个索引和单个索引的DataFrame
我在合并2个dataframe和dataframe1中的多个索引以及dataframe2中的单个索引时遇到问题。我有 数据帧1Python 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
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