<p>在处理混合类型时,<a href="https://stackoverflow.com/questions/54028199/for-loops-with-pandas-when-should-i-care">I usually recommend using something like a list comprehension</a>,它具有最小的内存和性能开销。你知道吗</p>
<pre><code>df['total_temp_2'] = [x + y for x, y in zip(df['total'], df['total_temp'])]
df
NAME total total_temp total_temp_2
ID
1 CVS [abc1] [cba, xyzzy01] [abc1, cba, xyzzy01]
2 Costco [bcd2, 22] [dcb, xyzzy02] [bcd2, 22, dcb, xyzzy02]
3 Apple [cde3] [edc, xyzzy03] [cde3, edc, xyzzy03]
</code></pre>
<p>如果这些是字符串列,则可以使用<code>ast.literal_eval</code>来解析它们:</p>
<pre><code>import ast
c = df.select_dtypes(include=[object]).columns
df[c] = df[c].applymap(ast.literal_eval)
</code></pre>
<p>如果上面的解决方案抛出<code>ValueError: malformed node or string:</code>,请尝试改用<a href="https://pyyaml.org/wiki/PyYAMLDocumentation" rel="nofollow noreferrer">^{<cd3>}</a>包。你知道吗</p>
<pre><code>import yaml
df = df.applymap(yaml.load)
</code></pre>
<hr/>
<p>有趣的是,简单的加法在0.24上对我有效。你知道吗</p>
<pre><code>df['total'] + df['total_temp']
ID
1 [abc1, cba, xyzzy01]
2 [bcd2, 22, dcb, xyzzy02]
3 [cde3, edc, xyzzy03]
dtype: object
</code></pre>
<p>这些也有用</p>
<pre><code>df['total'].add(df['total_temp'])
ID
1 [abc1, cba, xyzzy01]
2 [bcd2, 22, dcb, xyzzy02]
3 [cde3, edc, xyzzy03]
dtype: object
</code></pre>
<p/>
<pre><code>df['total_temp'].radd(df['total'])
ID
1 [abc1, cba, xyzzy01]
2 [bcd2, 22, dcb, xyzzy02]
3 [cde3, edc, xyzzy03]
dtype: object
</code></pre>
<p>这些操作在简单性方面非常好,但由于混合类型的操作更难矢量化,因此本质上是循环的。你知道吗</p>