<p>您可以使用<code>np.select</code>。为了检查字符串的长度,必须首先确保列的格式是字符串,因此<code>.astype(str)</code>。然后,您可以使用<code>.apply(lambda x: len(x) == condition)</code>根据条件返回结果:</p>
<pre><code>import numpy as np
input_file['cusotmerid'] = input_file['cusotmerid'].astype(str)
input_file['cusotmerid'] = np.select([input_file['cusotmerid'].apply(lambda x: len(x) == 8),
input_file['cusotmerid'].apply(lambda x: len(x) == 9)],
[input_file['cusotmerid'].str[0:2] + '-' + input_file['cusotmerid'].str[2:8],
'K' + '-' + input_file['cusotmerid'].str[0:3] + '-' + input_file['cusotmerid'].str[3:9]],
input_file['cusotmerid'])
input_file
id cusotmerid
0 1 89-898988
1 2 K-898-989889
</code></pre>
<p>将<code>np.select</code>语句分解为条件和结果可能更容易。我传递的3个参数是条件、结果和默认值(如果不满足任何条件)</p>
<pre><code>input_file['cusotmerid'] = input_file['cusotmerid'].astype(str)
c1 = input_file['cusotmerid'].apply(lambda x: len(x) == 8)
c2 = input_file['cusotmerid'].apply(lambda x: len(x) == 9)
conditions = [c1, c2]
r1 = input_file['cusotmerid'].str[0:2] + '-' + input_file['cusotmerid'].str[2:8]
r2 = 'K' + '-' + input_file['cusotmerid'].str[0:3] + '-' + input_file['cusotmerid'].str[3:9]
results = [r1,r2]
input_file['cusotmerid'] = np.select(conditions, results, input_file['cusotmerid'])
input_file
id cusotmerid
0 1 89-898988
1 2 K-898-989889
</code></pre>