str.slice命令无法选择字符串的所需部分



我在pandas中有以下数据框架:

d = {'Student Name': ['Omar 17BE004', '17BE005 Hussain', '17BE006 Anwar Syed']}
df_test = pd.DataFrame(data=d)
df_test.head(3)

我试图创建一个名为Student_ID的新列,该列将由第一行中代表学生ID的学生名列中的字符串部分组成,如17BE004。为此,我使用以下代码:

df_test['Indices'] =df_test['Student Name'].str.find('1')
start=df_test.Indices
stop=start+7
myList_2=list(range(3))

for x in myList_2:
df_test['Student ID']=df_test['Student Name'].str.slice(start[x], stop[x],1)

但是,我在学生ID列中得到的输出是:Omar 17,17be005, 17BE006

当我只想要student ID为17BE004时,student ID列第一行的结果是Omar 17。似乎str.slice命令无法从学生姓名中切片正确的学生ID,如果在所需的字符串前面有不需要的字符串。比如学生号17BE004前面的名字Omar。谁能告诉我怎样才能得到一个正确的学生证件栏?

使用str.extract()

d = {'Student Name': ['Omar 17BE004', '17BE005 Hussain', '17BE006 Anwar Syed']}
df_test = pd.DataFrame(data=d)
df_test['Student ID'] = df_test['Student Name'].str.extract(r'(b1w{6})')
print(df_test)
Student Name Student ID
0        Omar 17BE004    17BE004
1     17BE005 Hussain    17BE005
2  17BE006 Anwar Syed    17BE006

最新更新