<p>可能有点过分了。。。您可以附加到<code>df</code>,然后在收到信号时重新生成真值表<code>df2</code></p>
<pre><code>cl = [{'condition1': {'equipment1': True}},
{'condition2': {'equipment1': True}},
{'condition3': {'equipment1': False}},
{'condition1': {'equipment2': True}},
{'condition2': {'equipment2': False}},
{'condition2': {'equipment3': False}}]
# fully expand list / embedded dict
df = pd.json_normalize(cl, sep="-")
# bring multiple inputs together, there's only one signal per row
df2 = df.assign(foo=1).groupby("foo").agg({c:"first" for c in df.columns}).reset_index().drop(columns="foo")
# now restructure as required
df2 = df2.T.reset_index().assign(equip=lambda dfa: dfa["index"].apply(lambda r: r.split("-")[1]),
cond=lambda dfa: dfa["index"].apply(lambda r: r.split("-")[0]),
).drop(columns="index").set_index(["equip","cond"]).unstack(1).droplevel(0, axis=1).reset_index()
</code></pre>
<h2>输出</h2>
<pre><code>cond equip condition1 condition2 condition3
0 equipment1 True True False
1 equipment2 True False NaN
2 equipment3 NaN False NaN
</code></pre>