#python #pandas #extract
#python #pandas #извлечь
Вопрос:
У меня есть фрейм данных pandas, подобный приведенному ниже df, включающий некоторую строку с другим размером строки. мне нужна только часть этой строки с форматом, совпадающим с [A-Z]{1}[0-9]{4}
, таким как T7114.
NODE
====================================================
T7114 (Shahrekord)
T7374 (Esfahan - Shahrekord Rd.), T7114 , T7113
T8319 (HOUMEH Shahrekord), E1826 (Shahrekord)
E1577 (Shahrekord), T7114 (Shahrekord), T7941 (KIAN)
T8319 (HOUMEH Shahrekord), T7941 (KIAN)
T7941 (KIAN), T7114 (Shahrekord)
как я могу извлечь только эту часть из всей строки каждой строки и поместить их друг в друга, разделив с помощью запятой, как показано ниже df?
NODE NE
============================================ ============================
T7114 (Shahrekord) T7114
T7374 (Esfahan - Shahrekord Rd.),T7114,T7113 T7374,T7114,T7113
T8319 (HOUMEH Shahrekord), E1826 (Shahrekord) T8319,E1826
E1577 (Shahrekord), T7114 (Shahrekord), T7941 (KIAN) E1577,T7114,T7941
T8319 (HOUMEH Shahrekord), T7941 (KIAN) T8319,T7114
T7941 (KIAN), T7114 (Shahrekord) T7941,T7114
я попытался извлечь его с помощью регулярного выражения с функцией извлечения и удаления, как показано ниже, но это только извлечение первой строки соответствия, в то время как я хочу извлечь все строки и разделить их с помощью запятой. какой наиболее эффективный способ сделать это?
df['NODE'] = df['NODE'].str.extract('([A-Z{1}0-9{4} ] )', expand=False).str.strip()
Ответ №1:
Попробуйте это,
df["NODE"].str.findall("wd ").str.join(",")
0 T7114
1 T7374,T7114,T7113
2 T8319,E1826
3 E1577,T7114,T7941
4 T8319,T7941
5 T7941,T7114
Name: NODE, dtype: object