【问题标题】:How to join 2 lists of lists together with multiple columns in python如何在python中将2个列表列表与多列连接在一起
【发布时间】:2020-03-01 00:34:27
【问题描述】:

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

#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"]]

提前致谢!!!

【问题讨论】:

  • 有什么问题,你在苦苦挣扎的部分。顺便说一句,您是否考虑过使用 Pandas 之类的库?它将使这些类型的操作变得更加简单。

标签: python python-3.x dataframe math join


【解决方案1】:

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

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

def merge_probability(f3, f4):
    df0 = pd.DataFrame(f3[0], columns=f3[1] + ["probability0"])
    df1 = pd.DataFrame(f4[0], columns=f4[1] + ["probability1"])

    df = df0.merge(df1)

    df["probability"] = df["probability0"] * df["probability1"]
    df = df.drop(["probability0", "probability1"], axis=1)
    return [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]]

【讨论】:

    猜你喜欢
    • 2012-10-06
    • 2020-09-11
    • 1970-01-01
    • 2017-06-03
    • 2021-11-02
    • 2018-12-14
    • 1970-01-01
    • 2010-12-04
    • 2014-05-03
    相关资源
    最近更新 更多