,可以通过以下步骤实现:
import pandas as pd
import numpy as np
df1 = pd.DataFrame({'Column1': ['apple', 'banana', 'orange', 'grape'],
'Column2': ['cat', 'dog', 'elephant', 'monkey']})
df2 = pd.DataFrame({'Column3': ['This is an apple', 'I like bananas', 'Orange juice', 'Grapes are tasty'],
'Column4': ['apple', 'banana', 'orange', 'grape']})
str.contains()
结合布尔索引(Boolean Indexing)来获取匹配字符串的行索引:matching_indices = df2[df2['Column3'].str.contains('|'.join(df1['Column1']))].index
解析:
df2['Column3'].str.contains()
用于判断df2
的Column3
列中是否包含df1
的Column1
列中的任何一个字符串。'|'.join(df1['Column1'])
用于将df1
的Column1
列中的字符串连接成一个正则表达式的模式,使用|
分隔。df2[df2['Column3'].str.contains('|'.join(df1['Column1']))]
会返回包含匹配字符串的行的数据帧df2
。.index
用于获取返回数据帧的行索引。print(matching_indices)
完整代码示例:
import pandas as pd
import numpy as np
df1 = pd.DataFrame({'Column1': ['apple', 'banana', 'orange', 'grape'],
'Column2': ['cat', 'dog', 'elephant', 'monkey']})
df2 = pd.DataFrame({'Column3': ['This is an apple', 'I like bananas', 'Orange juice', 'Grapes are tasty'],
'Column4': ['apple', 'banana', 'orange', 'grape']})
matching_indices = df2[df2['Column3'].str.contains('|'.join(df1['Column1']))].index
print(matching_indices)
输出结果:
Int64Index([0, 1, 2, 3], dtype='int64')
在这个示例中,我们创建了两个数据帧df1
和df2
,其中df1
包含了需要匹配的字符串列表,而df2
包含了需要进行匹配的文本。通过使用字符串匹配函数str.contains()
,我们将df1
的字符串列表转换为正则表达式模式,并将其用于匹配df2
的文本列。最终,我们获得了包含匹配字符串的行索引。
领取专属 10元无门槛券
手把手带您无忧上云