Python 使用其他数据帧中的序列映射多个列

Python 使用其他数据帧中的序列映射多个列,python,pandas,Python,Pandas,我有两个数据帧。我需要将df1中B、C和D列中的文本替换为df2['SC']中的值,基于df2['Title'] df1 df2 期望输出: 使用堆栈+映射+取消堆栈 df1.set_index('A').stack().map(df2.set_index('Title')['SC']).unstack() 如果列包含所有NaN,则该列将丢失。为了避免这种情况,您可以reindex .reindex(df1.columns, axis=1) # append to

我有两个数据帧。我需要将
df1
B
C
D
列中的文本替换为
df2['SC']
中的值,基于
df2['Title']

df1

df2

期望输出:


使用
堆栈
+
映射
+
取消堆栈

df1.set_index('A').stack().map(df2.set_index('Title')['SC']).unstack()


如果列包含所有
NaN
,则该列将丢失。为了避免这种情况,您可以
reindex

.reindex(df1.columns, axis=1)             # append to previous command

是否也匹配“A”?如果Dave和Phil都有“绿色”怎么办?或者这根本不可能?@ALollz这是一个很好的观点,我没有提到这一点。。。实际上,我认为下面的解决方案只是将该问题标记为“InvalidIndexError:仅对唯一值的索引对象重新索引有效”我意识到“Title”不一定是名称的唯一(a)我认为这会导致下面的结果-‘InvalidIndexError:重新索引只对唯一值的索引对象有效——SC将始终与标题匹配,但是,它们可能会在一个索引中针对不同的值出现多次
 A     B     C      D    
 Dave  2     2     3
 Pete  3
 Phil  4
df1.set_index('A').stack().map(df2.set_index('Title')['SC']).unstack()
        B    C    D
A
Dave  2.0  2.0  3.0
Pete  3.0  NaN  NaN
Phil  4.0  NaN  NaN
.reindex(df1.columns, axis=1)             # append to previous command