<p>构造一个列为列表的数据帧,使用<code>explode()</code>进行扩展以获得所需的输出。在这种情况下,两个列表的长度相同,但在列表长度不相同的情况下仍然有效</p>
<pre><code>df = pd.DataFrame({"Tactic":[['Defense Evasion', 'Privilege Escalation', 'Defense Evasion', 'Privilege Escalation']],
"Name":[['Windows Management Instrumentation', 'XSL Script Processing', 'Domain Policy Modification', 'Forge Web Credentials']]})
df = df["Tactic"].explode().reset_index(drop=True).to_frame().join(df["Name"].explode().reset_index(drop=True))
print(df.to_string())
</code></pre>
<h2>输出</h2>
<pre><code> Tactic Name
0 Defense Evasion Windows Management Instrumentation
1 Privilege Escalation XSL Script Processing
2 Defense Evasion Domain Policy Modification
3 Privilege Escalation Forge Web Credentials
</code></pre>
<p>如果要展开到列,请使用<code>pd.Series</code></p>
<pre><code>import numpy as np
import random
df = pd.DataFrame([{"data":np.random.randint(1,10,s), "static":"a value"} for s in np.random.randint(1,10, 10)])
df = df.join(df.data.apply(pd.Series))
</code></pre>
<h2>输出</h2>
<pre><code> data static 0 1 2 3 4 5 6 7 8
0 [1] a value 1.0 NaN NaN NaN NaN NaN NaN NaN NaN
1 [4, 2, 1, 2, 5, 4, 5] a value 4.0 2.0 1.0 2.0 5.0 4.0 5.0 NaN NaN
2 [1] a value 1.0 NaN NaN NaN NaN NaN NaN NaN NaN
3 [2] a value 2.0 NaN NaN NaN NaN NaN NaN NaN NaN
4 [7, 8, 4, 8, 7, 6, 2, 1] a value 7.0 8.0 4.0 8.0 7.0 6.0 2.0 1.0 NaN
5 [1, 2, 6, 3, 9, 1, 8, 1] a value 1.0 2.0 6.0 3.0 9.0 1.0 8.0 1.0 NaN
6 [3, 3, 9, 4, 5, 5, 7] a value 3.0 3.0 9.0 4.0 5.0 5.0 7.0 NaN NaN
7 [2, 8, 1, 9, 5] a value 2.0 8.0 1.0 9.0 5.0 NaN NaN NaN NaN
8 [8, 7, 7, 9, 3, 6, 1, 7, 1] a value 8.0 7.0 7.0 9.0 3.0 6.0 1.0 7.0 1.0
9 [7] a value 7.0 NaN NaN NaN NaN NaN NaN NaN NaN
</code></pre>