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