0

我有两个不同的数据框,A 和 B,它们都有一个列,每个列都有一个字符串。我的目标是遍历 A 中的字符串列并检查 B 中是否存在该字符串,如果不存在,则对 A 中的其他列进行一些计算,然后使用 A 中的值向 B 写入一个新行。我很难检查字符串相似度。

我试过这个:

if A.string1.isin(B.string2.any() : 

我得到一个 TypeError: only list-like objects are allowed to be pass to isin(), you pass a [str]

我还尝试过在 A 上使用 for 循环:

for value in A.itertuples() :
  if value.string1.isin(B.string2.any()) :

然后我得到 AttributeError: 'str' object has no attribute 'isin'

样本数据:

A = pd.DataFrame({'A': ["john doe", " john doe", 'John'], 'B': [6, 7, 8]})
B = pd.DataFrame({'C': ["john dow", " john dough", 'john doe'], 'D': [9, 10, 11]})

有任何想法吗?

4

3 回答 3

0
import pandas as pd 

di1 = {"A":["a","b","c","d"],"B":["a","b","c","d"]}

di2 = {"A":["a","45","c","d"],"B":["a","b","c","d"]}

data1 = pd.DataFrame(di1) #first dataframe
data2 = pd.DataFrame(di2) #second dataframe

for value in list(data1.A):
  if value in list(data2.A) :
      print(value) # print only if values are common in two dataframes
于 2021-03-24T12:20:33.027 回答
0

你试过了吗:来源

A.string1.isin(B.string2)

对于您收到的所有 False,您可以相应地修改您的代码。

于 2021-03-24T12:09:40.583 回答
0

我找到了解决办法!

for value in A.itertuples() :
  if value.A in list(B.C) :
    do calculations on other columns in A
于 2021-03-24T15:01:05.907 回答