在这里学习 Python,非常感谢您对此的任何帮助。我的问题场景是,有 2 个数据框A和B包含名称的列(名称和标志)列表。
ExDF = pd.DataFrame({'Name' : ['Smith','John, Alex','Peter Lin','Carl Marx','Abhraham Moray','Calvin Klein'], 'Flag':['False','False','False','False','False','False']})
SnDF = pd.DataFrame({'Name' : ['Adam K ','John Smith','Peter Lin','Carl Josh','Abhraham Moray','Tim Klein'], 'Flag':['False','False','False','False','False','False']})
Flag 的初始值为 False。
第 1 点:我需要翻转两个数据框中的名称,即。Adam Smith 到 Smith Adam 并将翻转名称保存在两个数据框中的另一个新列中。- 这部分完成了。
第 2 点:然后A 数据框的原始名称和翻转名称都应检查B 数据框原始名称和翻转名称。如果它在两个数据框中都找到了标志列,则应该由 True 更新。
我编写了代码,但它对两个数据帧都进行了一对一的检查,例如A[0]to B[0],A[1]to B[1],但我需要检查A[0]B 数据帧的所有记录的记录。
请帮助我!
尝试过的代码如下:
import numpy as np
import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer
ExDF_swap = ExDF["Swap"] = ExDF["Name"].apply(lambda x: " ".join(reversed(x.split())))
SnDF_swap = SnDF["Swap"] = SnDF["Name"].apply(lambda x: " ".join(reversed(x.split())))
ExDF_swap = pd.DataFrame(ExDF_swap)
SnDF_swap = pd.DataFrame(SnDF_swap)
vect = CountVectorizer()
X = vect.fit_transform(ExDF_swap.Name)
Y = vect.transform(SnDF_swap.Name)
res = np.ravel(np.any((X.dot(Y.T) > 1).todense(), axis=1))
pd.DataFrame(X.toarray(), columns=vect.get_feature_names())
pd.DataFrame(Y.toarray(), columns=vect.get_feature_names())
ExDF["Flag"] = np.ravel(np.any((X.dot(Y.T) > 1).todense(), axis=1))
SnDF["Flag"] = np.ravel(np.any((X.dot(Y.T) > 1).todense(), axis=1))