擅长:python、mysql、java
<p>对于您的功能,您可以尝试:</p>
<pre><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]
out = df.assign(sign=df[['number','name']].apply(lambda x: get_sign(*x),axis=1))
</code></pre>
<p>请注意,您也可以对函数进行矢量化,这样您就不需要<code>apply</code>这是一个缓慢的过程:</p>
<pre><code>import numpy as np
def get_sign_modified(dataframe,number:str, name:str) -> str:
return np.where(dataframe[number].str.startswith("-"),
"Negative-" + dataframe[name].str[0], "Positive-" +dataframe[name].str[0])
out = df.assign(sign=get_sign_modified(df,'number','name'))
</code></pre>
<hr/>
<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>