【问题标题】:finding patterns of two column values of a df with a dict and adding a new column based on that使用 dict 查找 df 的两列值的模式并基于该模式添加新列
【发布时间】:2021-05-03 17:27:37
【问题描述】:

我有一个 df:

MSG_TYPE    MSG_TYPE_1
0   MT740   MT747
1   MT747   MT742
2   MT742   MT799
4   MT740   MT742
5   MT742   MT742

我有一个 dict 作为 d:

[{'MSG_TYPE': 'MT740', 'MSG_TYPE_1': 'MT747', 'RELATIONSHIP': 'AMENDMENT_TO_AUTHORISISATION'}, {'MSG_TYPE': 'MT740', 'MSG_TYPE_1': 'MT742', 'RELATIONSHIP': 'REIMBURSEMENT_CLAIM_FOR'}, {'MSG_TYPE': 'MT740', 'MSG_TYPE_1': 'MT799', 'RELATIONSHIP': 'ADDITIONAL_INFORMATION'}, {'MSG_TYPE': 'MT742', 'MSG_TYPE_1': 'MT799', 'RELATIONSHIP': 'ADDITIONAL_INFORMATION'}, {'MSG_TYPE': 'MT742', 'MSG_TYPE_1': 'MT742', 'RELATIONSHIP': 'REIMBURSEMENT_CLAIM_FOR'}, {'MSG_TYPE': 'MT742', 'MSG_TYPE_1': 'MT740', 'RELATIONSHIP': 'REIMBURSEMENT_CLAIM_FOR'}, {'MSG_TYPE': 'MT742', 'MSG_TYPE_1': 'MT747', 'RELATIONSHIP': 'AMENDMENT_TO_AUTHORISISATION'}

我想将 df 的所有 rown 的模式与 dict d 匹配,如果特定行的模式与键值对条目之一相同,并附加一个新列 df['RELATIONSHIP'] dict 中匹配的相同条目,如果没有匹配,则为 NAN。

我已经相应地编写了我的代码:

for item in df.iterrows():
    for value in d:
        if item[1]==value['MSG_TYPE'] & item[2]==value['MSG_TYPE_1']:
            df['RELATIONSHIP']=value['RELATIONSHIP']

这给了我一个错误:

IndexError: tuple index out of range

有没有更好的 Pythonic 方式来做这件事,因为 dict 键名与 df 列名相同。

【问题讨论】:

  • 我们使用0索引,所以应该是item[0]item[1]。这就是为什么您会收到 index out of range 错误 (2) 将是长度为 2 元组中的第三项。

标签: python pandas dataframe dictionary


【解决方案1】:

试试merge:

df.merge(pd.DataFrame(d), on=['MSG_TYPE','MSG_TYPE_1'], how='left')

输出:

  MSG_TYPE MSG_TYPE_1                  RELATIONSHIP
0    MT740      MT747  AMENDMENT_TO_AUTHORISISATION
1    MT747      MT742                           NaN
2    MT742      MT799        ADDITIONAL_INFORMATION
3    MT740      MT742       REIMBURSEMENT_CLAIM_FOR
4    MT742      MT742       REIMBURSEMENT_CLAIM_FOR

【讨论】:

    猜你喜欢
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 2017-10-24
    相关资源
    最近更新 更多