Как извлечь часть строки, соответствующую определенному шаблону, но для всех случаев подряд и разделить их запятой с помощью pandas

#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