[英]Using regex and pandas in the DataFrame to replace the value
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 值時,我只想要 E1 列的痤瘡|dfe|sac 值代替 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]
Output:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.