如何在python中将两个列表与多个列连接在一起

如何在python中将两个列表与多个列连接在一起,python,python-3.x,dataframe,math,join,Python,Python 3.x,Dataframe,Math,Join,我有这两个列表,最后一列是发生这种情况的概率 #Pr(Fraud | Trav) f3 = [[ [True, True, 0.01], [False, True, 0.004], [True, False, 0.99], [False, False, 0.996] ], ["Trav", "Fraud"]] f4 = [[ [False, True, True, 0.1], [False, False, True, 0.01], [Tr

我有这两个列表,最后一列是发生这种情况的概率

#Pr(Fraud | Trav)
f3 = [[
    [True, True, 0.01],
    [False, True, 0.004],
    [True, False, 0.99],
    [False, False, 0.996]
], ["Trav", "Fraud"]]

f4 = [[
    [False, True, True, 0.1],
    [False, False, True, 0.01],
    [True, True, True, 0.9],
    [True, False, True, 0.9],
    [False, True, False, 0.9],
    [False, False, False, 0.99],
    [True, True, False, 0.1],
    [True, False, False, 0.1],
], ["Trav", "Fraud", "FP"]]
我想通过Trav和Fraud将它们结合起来,得出下表:

[[True,True,True,0.009]
[True,True,False,0.001]
[True,False,True,0.891]
[True,False,False,0.099]
[False,True,True,0.0004]
[False,True,False,0.0036]
[False,False,True,0.00996]
[False,False,False,0.98604]],
["Trav","Fraud","FP"]]

提前感谢

您可以使用
panda.DataFrame.merge
来合并它们

如果您只想合并两个列表:

def合并概率(f3,f4):
df0=pd.DataFrame(f3[0],列=f3[1]+[“概率0”])
df1=pd.DataFrame(f4[0],列=f4[1]+[“概率1”])
df=df0.merge(df1)
df[“概率”]=df[“概率0”]*df[“概率1”]
df=df.drop([“概率0”,“概率1”],轴=1)
返回[df.values.tolist(),f4[1]]
或者,如果需要将多个列表合并在一起:

def merge_probabilitys(*fs):
    size = len(fs)
    dfs = [
        pd.DataFrame(fs[i][0], columns=fs[i][1] + ["probability" + str(i)])
        for i in range(size)
    ]

    df_res = dfs[0]
    for df in dfs[1:]:
        df_res = df_res.merge(df)

    df_res["probability"] = 1
    for i in range(size):
        df_res["probability"] *= df_res["probability" + str(i)]

    df_res = df_res.drop(["probability" + str(i) for i in range(size)], axis=1)
    return [df_res.values.tolist(), list(df_res.columns)[:-1]]

问题是什么,你在努力解决哪一部分。顺便问一下,你有没有考虑过像熊猫一样使用图书馆?这将使这类操作更加简单。