熊猫数据框交叉引用查询

时间:2018-10-31 10:56:00

标签: python pandas

我有一个数据框,其中包含一个id列,一个链接的id列和一个value列。链接的ID是“可选的”,是指同一数据帧中的另一行(-1表示没有链接)。我想做的是在链接ID给出的行中选择具有有效链接的行,其中value等于value

import pandas as pd

df = pd.DataFrame({"id": [0,1,2,3,4,5], "linkid": [-1,3,-1,0,5,-1], "value": [10, 20, 30, 20, 40, 50]})
print(df)

# should match row 1 (only): id 1 has value 20 and linkid 3 also has value 20  
# should not match 
matched = df.loc[df.value == df.loc[df.id == df.linkid].value]
# ValueError: Can only compare identically-labeled Series objects

我在上面的尝试导致错误。我怀疑我的尝试距离目标还很远,但不确定如何进行。由于性能原因,我想避免循环。感激地收到任何帮助

我认为已经很清楚了,但是根据代码中的注释,在此示例中,我需要的输出是原始数据帧的第1行:

id  linkid  value
 1       3   20.0

2 个答案:

答案 0 :(得分:1)

我认为您可以尝试以下方法:

jobs = []
for n in range(0, 4):
    print "adding a job %s" % n
    p = multiprocessing.Process(target=api.push())
    jobs.append(p)

# Starts threads
for job in jobs:
    job.start()

for job in jobs:
    job.join()

答案 1 :(得分:0)

value_link的{​​{1}}的列linkid创建另一列value。如下:

id == linkid