根据前两个字母替换 pandas 数据框列的部分内容

我有一个 pandas 数据框,我需要根据前两个字母有条件地更新值。该模式很简单,下面的代码也可以工作,但感觉不像Python。我需要将其扩展到其他字母(至少 11-19/AJ),虽然我可以添加额外的行,但我真的很想以正确的方式执行此操作。现有代码如下


df['REFERENCE_ID'] = df['PRECERT_ID'].astype(str)

df.loc[df['REFERENCE_ID'].str.startswith('11'), 'REFERENCE_ID'] = 'A' + df['PRECERT_ID'].str[-7:]

df.loc[df['REFERENCE_ID'].str.startswith('12'), 'REFERENCE_ID'] = 'B' + df['PRECERT_ID'].str[-7:]

df.loc[df['REFERENCE_ID'].str.startswith('13'), 'REFERENCE_ID'] = 'C' + df['PRECERT_ID'].str[-7:]

df.loc[df['REFERENCE_ID'].str.startswith('14'), 'REFERENCE_ID'] = 'D' + df['PRECERT_ID'].str[-7:]

df.loc[df['REFERENCE_ID'].str.startswith('15'), 'REFERENCE_ID'] = 'E' + df['PRECERT_ID'].str[-7:]

我想我也许可以使用字母列表,比如


letters = list(string.ascii_uppercase)

但我对数据帧(以及一般的Python)很陌生,并且无法弄清楚获得相当于以下数据帧的语法


letters = list(string.ascii_uppercase)

text = '1523456789'

first = int(text[:2])

text = letters[first-11] + text[-7:]

我无法找到解决此问题的方法,但如果有任何帮助或类似问题的链接(如果存在),我将不胜感激。谢谢。


慕尼黑5688855
浏览 122回答 2
2回答

慕丝7291255

df['REFERENCE_ID'] = df['PRECERT_ID'].astype(str)# Save all uppercase english letters in a listletters = list(string.ascii_uppercase)# Enumerate over the letters list and start with 11 as the OP wants in this way only. # All the uppercase english letters and corresponding numbers starting with 11. for i,l in enumerate(letters, start=11):    df.loc[df['REFERENCE_ID'].str.startswith(str(i)), 'REFERENCE_ID'] = l + df['PRECERT_ID'].str[-7:]

千巷猫影

我会尝试制作一本字典并用来map加快速度。要创建查找字典,您可以使用:lu_dict = dict(zip([str(i) for i in range(11,20)],[chr(i) for i in range(65,74)]))返回:{'11': 'A', '12': 'B', '13': 'C', '14': 'D', '15': 'E', '16': 'F', '17': 'G', '18': 'H', '19': 'I'}然后你可以使用它.str.slice.map来避免 for 循环。df = pd.DataFrame(data = {'Reference_ID':['112326345','12223356354','6735435634']})df.Reference_ID = df.Reference_ID.astype(str)df.loc[:,'Reference_new'] = df.Reference_ID.str.slice(0,2).map(lu_dict) + df.Reference_ID.str.slice(-7, )结果是:  Reference_ID Reference_new0    112326345      A23263451  12223356354      B33563542   6735435634           NaN
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python