回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我试图通过应用一个函数来创建/修改一列,该函数处理一列或两列中的字符串</p>
<p>举一个具体的例子,我有以下数据框架和函数:</p>
<pre class="lang-py prettyprint-override"><code>def get_sign(number:str, name:str) -> str:
"""Function to apply on two columns to produce another one"""
if number.startswith("-"):
return "Negative-" + name[0]
else:
return "Positive-" + name[0]
df = pd.DataFrame({'name': ["John", "Jack", "Jeff", "Kate"], "number":["123_456", "-123", "+456", "-0"], "age": [10, 20, 30, 36]})
</code></pre>
<p>我正在尝试获取此数据帧:</p>
<pre><code> name number age sign
0 John 123_456 10 Positive-J
1 Jack -123 20 Negative-J
2 Jeff +456 30 Positive-J
3 Kate -0 36 Negative-K
</code></pre>
<p>我尝试使用<code>assign</code>将序列转换为“字符串”,但出现以下错误:</p>
<pre><code>df.assign(sign=lambda x:get_sign(x["number"].str, x["name"].str))
</code></pre>
<pre><code><ipython-input-64-e72c1bf8f4bf> in <lambda>(x)
7
8 df = pd.DataFrame({'name': ["John", "Jack", "Jeff", "Kate"], "number":["123_456", "-123", "+456", "-0"], "age": [10, 20, 30, 36]})
----> 9 df.assign(sign=lambda x:get_sign(x["number"].str, x["name"].str))
10 df["sign"] = pd.Series([get_sign(el) for el in df["number"]])
11 df
...
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
</code></pre>
<p>我怎样才能做到呢?谢谢</p>