[英]Address Matching two columns python
考虑我在数据框中有两列:
第 1 列:
第 1 行:堆栈溢出
第 2 行:Python
第 2 栏:
第 1 行:['堆栈','堆栈溢出']
第 2 行:['Python 编程','Python Snake']
我想按行进行精确匹配(可选),并相应地返回一个标志。
输出:
[0] 匹配
[1] 不匹配
尝试过:我在循环中尝试过“in”函数,但这也给出了部分匹配作为“匹配”。
代码:
for (item, Value),(item1, Value1) in zip(df1['Column1'].iteritems(),df2['Column2'].iteritems()):
if str(Value).strip() in str(Value1).strip():
found.append(1)
我认为你需要:
def isMatch(row):
for i in row['b']:
if i == row['a']:
return 'Match'
return 'Not Match'
df['c'] = df.apply(lambda x: isMatch(x), axis=1)
print(df)
好的,我会尝试回答这个问题,所以如果其他人有类似的问题。 基本上,您希望检查col1
值是否在col2
(列表)中。 您可以轻松使用isin
。 应用 numpy where
函数,可以创建一个标志。
这是一个模型。
df = pd.DataFrame({
'col1': ['Stack Overflow', 'Python'],
'col2': [ ['Stack', 'Stack Overflow'], ['Python Programming', 'Python Snake']]})
df['Flag'] =df.apply(lambda x: x['col1'] in x['col2'], axis=1)
df
结果如下:
col1 col2 Flag
0 Stack Overflow [Stack, Stack Overflow] True
1 Python [Python Programming, Python Snake] False
让我知道它是否有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.