gpt4 book ai didi

python - 如何应用 if 条件并应用于数据框

转载 作者:行者123 更新时间:2023-12-05 00:44:42 25 4
gpt4 key购买 nike

需要查看'detected' bool3_res的 key 带 key is_doc1bool_resbool_2资源

  • 如果 bool3_res['detected'] == bool1_res['is_doc1'] == True然后我的resp必须返回
  • 如果 bool3_res['detected'] == bool2_res['is_doc1'] == True然后我的resp必须返回\

  • 3:否则返回“无效”

    数据框
    user_uid,bool1,bool2,bool3,bool1_res,bool2_res,bool3_res
    1001,27452.webp,981.webp,d92e.webp,"{'is_doc1': False, 'is_doc2': True}","{'is_doc1': True, 'is_doc2': True}","{'detected': True, 'count': 1}"
    1002,27452.webp,981.webp,d92e.webp,"{'is_doc1': True, 'is_doc2': True}","{'is_doc1': False, 'is_doc2': True}","{'detected': True, 'count': 1}"

    我的代码
    def new_func(x):
    d1 = df['bool1_res'].to_dict()
    d1 = eval(d1[0])
    d2 = df['bool2_res'].to_dict()
    d2 = eval(d2[0])
    d3 = df['bool3_res'].to_dict()
    d3 = eval(d3[0])

    if d1['is_doc1'] == d3['detected'] == True:
    resp = {
    "task_id": "uid",
    "group_id": "uid",
    "data": {
    "document1": df['bool1'],
    "document2": df['bool3']
    }
    }

    elif d2['is_doc1'] == d3['detected'] == True:
    resp = {
    "task_id": "user_uid",
    "group_id": "uid",
    "data": {
    "document1": df['bool2'],
    "document2": df['bool3']
    }
    }
    elif d3['detected'] == False:
    resp = 'Not valid'
    else:
    resp = 'Not valid'
    return resp
    df['new'] = df.apply(new_func, axis = 1)
    #df['new'] = df[['bool1', 'bool2', 'bool3', 'bool1_res', 'bool2_res', 'bool3_res']].applymap(new_func)

    我的预期

    df['新']
    {'u_id': 'uid', 'group': 'uid', 'data': {'document1': ['981.webp'], 'document2': {'d92e.webp'}}}"
    {'u_id': 'uid', 'group': 'uid', 'data': {'document1': ['27452.webp'], 'document2': {'d92e.webp'}}}"

    我的出局
    df['新']
    0    {'task_id': 'user_uid', 'group_id': 'uid', 'data': {'document1': ['981.webp', '981.webp'], 'document2': ['d92e.webp', 'd92e.webp']}}
    1 {'task_id': 'user_uid', 'group_id': 'uid', 'data': {'document1': ['981.webp', '981.webp'], 'document2': ['d92e.webp', 'd92e.webp']}}
    Name: new, dtype: object

    最佳答案

    你应该避免 eval 而是使用 ast.literal_eval x而是 df对于每行处理和一个元素列表添加 []x['bool1'] , x['bool2']x['bool3'] :

    import ast

    def new_func(x):
    d1 = ast.literal_eval(x['bool1_res'])
    d2 = ast.literal_eval(x['bool2_res'])
    d3 = ast.literal_eval(x['bool3_res'])

    if d1['is_doc1'] == d3['detected'] == True:
    resp = {
    "task_id": "uid",
    "group_id": "uid",
    "data": {
    "document1": [x['bool1']],
    "document2": [x['bool3']]
    }
    }
    elif d2['is_doc1'] == d3['detected'] == True:
    resp = {
    "task_id": "user_uid",
    "group_id": "uid",
    "data": {
    "document1": [x['bool2']],
    "document2": [x['bool3']]
    }
    }
    elif d3['detected'] == False:
    resp = 'Not valid'
    else:
    resp = 'Not valid'
    return resp
    df['new'] = df.apply(new_func, axis = 1)
    print (df['new'].iat[0])
    {'task_id': 'user_uid', 'group_id': 'uid', 'data': {'document1': ['981.webp'], 'document2': ['d92e.webp']}}

    print (df['new'].iat[1])
    {'task_id': 'uid', 'group_id': 'uid', 'data': {'document1': ['27452.webp'], 'document2': ['d92e.webp']}}

    关于python - 如何应用 if 条件并应用于数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59445290/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com