import pandas as pd
import re
regexdf_data = {
'STag': ['Title_1', 'Abs_1', 'Abs_3', 'Abs_4'],
'E1': ['pacnes', 'acne|dfe|sac', 'pI', 'kera'],
'E1_CUI': ['C3477', 'C2166', 'C9871', 'C2567']
}
df3 = pd.DataFrame(regexdf_data)
df3
E1 E1_CUI STag
0 pacnes C3477 Title_1
1 acne|dfe|sac C2166 Abs_1
2 pI C9871 Abs_3
3 kera C2567 Abs_4
现在,当对应行的STag列中有Abs_1值时,我只想要来自痤疮的痤疮|dfe|sac值的E1列,而不是E1_CUI列的C2166。
我试过这个df3.loc[df3['STag'] == 'Abs_1', 'E1_CUI'] = re.split("|",df3['E1'])
,但不起作用。
Expected Output
E1 E1_CUI STag
0 pacnes C3477 Title_1
1 acne|dfe|sac acne Abs_1
2 pI C9871 Abs_3
3 kera C2567 Abs_4
尝试使用带split的字符串访问器和第一个元素的get快捷方式(@ShubhamSharma的改进(:
import pandas as pd
regexdf_data = {
'STag': ['Title_1', 'Abs_1', 'Abs_3', 'Abs_4'],
'E1': ['pacnes', 'acne|dfe|sac', 'pI', 'kera'],
'E1_CUI': ['C3477', 'C2166', 'C9871', 'C2567']
}
df3 = pd.DataFrame(regexdf_data)
m = df3['STag'] == 'Abs_1'
df3.loc[m, 'E1_CUI'] = df3.loc[m, 'E1'].str.split('|').str[0]
输出:
print(df3)
STag E1 E1_CUI
0 Title_1 pacnes C3477
1 Abs_1 acne|dfe|sac acne
2 Abs_3 pI C9871
3 Abs_4 kera C2567