繁体   English   中英

将df1与df2匹配,然后将其替换为索引值(非内部联接)

[英]Match df1 with df2 and Replace it with index value (Not Inner Join)

我正在寻找匹配df1中的值,并将其替换为df1中df2的索引。

例如

输入df1

Column1
Test1
Test2
Test1, Test2

输入df2

Index ColumnA
0     Test1
1     Test2

所以,我期望的最终输出是

输出df1

Column1
0
1
0, 1

由于性能问题,我不希望迭代df1中的每个行值并进行替换,但是有没有可以执行此操作的函数?

请帮助我。

这似乎是一个replace问题; 您可以通过字典。

df1['Column1'].replace(
    dict(zip(df2['ColumnA'], df2['Index'].astype(str))), regex=True)

0       0
1       1
2    0, 1
Name: Column1, dtype: object

如果需要考虑子字符串(IOW,防止匹配较大字符串的子字符串),则可以为每个模式添加字边界。

df1 = pd.DataFrame({'Column1': ['Test1', 'Test2', 'Test1, Test2', 'Test12']})
df1

        Column1
0         Test1
1         Test2
2  Test1, Test2
3        Test12

m = {rf'\b{x}\b': str(y) for x, y in zip(df2['ColumnA'], df2['Index'])}
df1['Column1'].replace(m, regex=True)

0         0
1         1
2      0, 1
3    Test12
Name: Column1, dtype: object

尝试不同的get_dummies

x=df1.Column1.str.get_dummies(',').rename(columns=dict(zip(df2.ColumnA,df2.Index)))
x.dot(x.columns.astype(str)+',').str[:-1]
Out[23]: 
0      0
1      1
2    0,1
dtype: object

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM