Чтобы данные были только в квадратных скобках во фрейме данных с использованием Python (регулярное выражение) - PullRequest
0 голосов
/ 20 января 2019

Я работал с фреймом данных, в котором запись данных содержит полезную информацию в квадратных скобках и бесполезную информацию вне квадратной скобки.

Пример фрейма данных:

 Record        Data
      1          Rohan is [age:10] with [height:130 cm].
      2          Girish is [age:12] with [height:140 cm].
      3          Both kids live in [location:Punjab] and [location:Delhi].
      4          They love to play [Sport:Cricket] and [Sport:Football].

Ожидаемый результат:

 Record        Data
      1          [age:10],[height:130 cm]
      2          [age:12],[height:140 cm]
      3          [location:Punjab],[location:Delhi]
      4          [Sport:Cricket],[Sport:Football]

Я пробовал это, но не могу получить желаемый результат.

df['b'] = df['Record'].str.findall('([[][a-z \s]+[]])', expand=False).str.strip()
print(df['b'])

Это не похоже на работу.

Я новичокс Python.

1 Ответ

0 голосов
/ 20 января 2019

Я считаю, что вам нужно для strings findall с join:

df['b'] = df['Data'].str.findall('(\[.*?\])').str.join(', ')
print (df)

   Record                                               Data  \
0       1            Rohan is [age:10] with [height:130 cm].   
1       2           Girish is [age:12] with [height:140 cm].   
2       3   Both kids live in [location:Punjab] and [Delhi].   
3       4  They love to play [Sport:Cricket] and [Sport:F...   

                                   b  
0          [age:10], [height:130 cm]  
1          [age:12], [height:140 cm]  
2         [location:Punjab], [Delhi]  
3  [Sport:Cricket], [Sport:Football] 

Если нужны значения в lists:

df['b'] = df['Data'].str.findall('\[(.*?)\]')
print (df)

   Record                                               Data  \
0       1            Rohan is [age:10] with [height:130 cm].   
1       2           Girish is [age:12] with [height:140 cm].   
2       3   Both kids live in [location:Punjab] and [Delhi].   
3       4  They love to play [Sport:Cricket] and [Sport:F...   

                                 b  
0          [age:10, height:130 cm]  
1          [age:12, height:140 cm]  
2         [location:Punjab, Delhi]  
3  [Sport:Cricket, Sport:Football]  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...