<p>您应该避免使用<a href="https://stackoverflow.com/questions/1832940/why-is-using-eval-a-bad-practice">^{<cd1>}</a>,而是使用<a href="https://docs.python.org/3.7/library/ast.html#ast.literal_eval" rel="nofollow noreferrer">^{<cd2>}</a>和<code>x</code>代替{<cd4>}来处理每行,对于一个元素列表,将<code>[]</code>添加到{<cd6>}、<code>x['bool2']</code>和{<cd8>}:</p>
<pre><code>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)
</code></pre>
<hr/>
^{pr2}$