我正在处理大量数据,并试图映射两个数据帧中的值。期待更好的时间复杂性。
在这里,我试图匹配df1中的df2中的代码,如果值匹配,则从df1中获取MLC代码。
df1
代码 | MLC代码 |
---|---|
1 | 8 |
2 | 66 |
8 | 62 |
4 | 66 |
试试这个
df2.merge(df1[['Code', 'MLC Code']], how='left', on='Code')
我们可以使用cumcount
和groupby
创建子合并密钥
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
此外。。。亚历克斯给出的解决方案起到了作用!!!!