Python 如何将一个数据帧的单列中的值映射到另一个数据帧的两列,并提取映射的值?

Python 如何将一个数据帧的单列中的值映射到另一个数据帧的两列,并提取映射的值?,python,pandas,Python,Pandas,我有两个数据帧 df1 = pd.read_excel("data1.xlsx") df2 = pd.read_excel("data2.xlsx" df1 Data1 Data2 Score ABC AB1 1 AB1 ABC 4 AB2 AB2 6 ABC ABD 0.7 GDH ABD 0.9 KMN KSF 0.5 KSF KSF

我有两个数据帧

df1 = pd.read_excel("data1.xlsx")
df2 = pd.read_excel("data2.xlsx"

df1

Data1   Data2   Score
ABC      AB1    1
AB1      ABC    4
AB2      AB2    6
ABC      ABD    0.7
GDH      ABD    0.9
KMN      KSF    0.5
KSF      KSF    6

df2

Data1
AB1
AB2
ABC
我想将
df2[“Data1”]
映射到
df1
并提取映射值:

merged_data = pd.merge(df2, df1, how='inner', left_on='Data1', right_on='Data1')
merged_data2 = pd.merge(df2, df1, how='inner', left_on='Data1', right_on='Data2')

combined_data = pd.concat([merged_data,merged_data2])
#remove duplicates
combined_data_rm = combined_data.drop_duplicates()
combined_data_rm

Data1   Data2   Score
ABC      AB1    1
AB1      ABC    4
AB2      AB2    6
ABC      ABD    0.7
有没有其他方法可以使用熊猫进行分析?

试试这个

print(pd.merge(df1, df2, on=["Data1"]))
O/p:


internal
加入工作吗?
internal
不会给出您提到的输出
df=df1[df1['Data1'].isin(df2['Data1'])| df1['Data2'].isin(df2['Data1']]
假设数据帧中有不同的头名称。使用
left_on
right_on
这两种方法是否有效?是的,它会起作用。它不会像您预期的那样起作用。试试看@svp@user288925-为什么它不起作用?如果您对OP有任何解决方案,请将您的答案作为单独的帖子发布。
  Data1 Data2  Score
0   ABC   AB1    1.0
1   ABC   ABD    0.7
2   AB1   ABC    4.0
3   AB2   AB2    6.0