在一系列其他文本中查找一系列文本的位置

时间:2018-12-27 19:24:35

标签: python pandas search

我想在ser2 C列中搜索ser1 A列值,并在相应的D列文本中找到B列文本的位置。 ser2是我正在查看的数据库,我想保存订单ser1,但只保存文本位置。

ser1
A         B
"aa"    "xy"
"ac"    "ztb"
"aa"    "tx"
nan     "yzb"


ser2
C         D
"aa"     "txyzan"
"bc"     "axyz"
"ac"     "fyztb"

我试图将ser1和ser2的索引更改为A和C列并在其中搜索,但是有1个以上的nan和“ aa”值,所以我得到TypeError:必须是str,而不是Series。

y=[]


for x in ser1.A:
y.append(ser2.loc[x,"D"].find(ser1.loc[x,"B"]))

因此,我想获得一个类似[1、2、0,nan]的列表。因此,如果有人可以提供帮助,我会很高兴。
谢谢。

1 个答案:

答案 0 :(得分:1)

我不了解熊猫,相反,我使用基本的python准备了解决方案。数据帧ser1[["aa", "ac", "aa", ""],["xy", "ztb", "tx", "yzb"]]ser2也进行了相应的突变。

假设ser1和ser2的所有列的行数相同:

y=list()
for x in range(len(ser1[0])):
    if ser1[0][x]=="": 
        y.append(float('nan'))
    else:
        y.append(ser2[1][ser2[0].index(ser1[0][x])].index(ser1[1][x]))

如果我没有误解您的话,这可能会解决您的问题。由于我使用了索引方法,因此代码将始终找到aa的第一个匹配项。另外请注意,您可以通过以下方式将数据框更改为列表列表:

ser1_list = ser1.values.tolist()

在上面的代码块之后,您可以通过以下方式将其重新排列为熊猫的数据框:

result = pandas.DataFrame(y)