擅长:python、mysql、java
<p>使用lambda函数绝对可以做到这一点。但是,您也可以对列值进行切片,并将其缩回以获得所需内容。使用这种方法,它将拾取所有数据并根据指定的3个条件进行排列。与其他回答一样,长度为7或以上的回答会得到更好的结果</p>
<p>我是这样做的:</p>
<pre><code>c = ['key','adj_key']
d = [['123456789','123456789'],
['AB123456789','AB2345-89'],
['CD123456789','CD123456789'],
['987654321','987654321']]
import pandas as pd
df = pd.DataFrame(d,columns=c)
print (df)
df['adjkey'] = df['key']
df.loc[df['key'].str[:2] == 'AB','adjkey'] = df['key'].str[:2]+df['key'].str[3:-4]+'-'+df['key'].str[-2:]
print (df)
</code></pre>
<p>其输出为:</p>
<p>原始数据帧:</p>
<pre><code> key adj_key
0 123456789 123456789
1 AB123456789 AB2345-89
2 CD123456789 CD123456789
3 987654321 987654321
</code></pre>
<p>新数据帧:</p>
<pre><code> key adj_key adjkey
0 123456789 123456789 123456789
1 AB123456789 AB2345-89 AB2345-89
2 CD123456789 CD123456789 CD123456789
3 987654321 987654321 987654321
</code></pre>