如果两列匹配,则从另一个数据帧添加列



我正在处理大量数据,并试图映射两个数据帧中的值。期待更好的时间复杂性。

在这里,我试图匹配df1中的df2中的代码,如果值匹配,则从df1中获取MLC代码。

df1

代码 MLC代码
1 8
2 66
8 62
4 66

试试这个

df2.merge(df1[['Code', 'MLC Code']], how='left', on='Code')

我们可以使用cumcountgroupby创建子合并密钥

out = df2.assign(key = df2.groupby('Code').cumcount()).
merge(df1.assign(key = df1.groupby('Code').cumcount()),how='left')
Out[106]: 
Code  key  MLC Code
0     1    0       8.0
1     2    0      66.0
2     3    0       NaN
3     4    0      66.0
4     4    1       NaN
5     8    0      62.0

我会尝试重现这个过程。。。

第一个导入模块和数据

import pandas as pd
# Your sample data
data_1 = {'Code': [1,2,8,4], 'MLC Code': [8,66,62,66]}
data_2 = {'Code': [1,2,3,4,4,8]}
# Create Dataframes from your data
df1 = pd.DataFrame(data_1)
df2 = pd.DataFrame(data_2)

使用合并

df_out = pd.merge(df1, df2, how='right', left_on='Code', right_on='Code')

您将得到以下输出:

Code    MLC Code
0   1        8.0
1   2       66.0
2   3        NaN
3   4       66.0
4   4       66.0
5   8       62.0

如果你不想索引,你可以这样做:

df_out = pd.merge(df1, df2, how='right', left_on='Code', right_on='Code').set_index('Code')
MLC Code
Code    
1   8.0
2   66.0
3   NaN
4   66.0
4   66.0
8   62.0

此外。。。亚历克斯给出的解决方案起到了作用!!!!

相关内容

最新更新