擅长:python、mysql、java
<p>你试过不涉及循环的方法吗?在这个方向上的东西:</p>
<pre><code>import re
import pandas as pd
dict_= {'2017() (pat)':'2000',
'2018() (pat)':'2001'}
df = pd.DataFrame({'YEAR': ['test2017end','test2018end','test2019end'],
'MONTH': ['Jan','Feb','Mar'],
'DD': ['1','12','22']})
pat = r'(\d{4,4})'
dict_b = {re.search(pat, key).group(1):item for key, item in dict_.items()}
# Return NaN for no match
df['YEARX'] = df['YEAR'].str.extract(pat,expand=False).map(dict_b)
# Return found year for no match
df['YEARY'] = df['YEAR'].str.extract(pat,
expand=False).apply(lambda x: dict_b[x] if x in dict_b.keys() else x)
</code></pre>