Синтаксический анализ столбца в pandas

#python #pandas

#python #pandas

Вопрос:

Я пытаюсь взять информацию, которая находится в столбце, разделенном запятыми, и выделить определенные фрагменты. Например, столбец выглядит следующим образом:

(500, 411, 130, 816)

Я хочу иметь возможность извлекать определенные значения, например 500, в любом случае, когда это происходит.

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

 def parseFaultCodes(self):
        #df = pandas.read_csv('modified_example.csv')
        #faultCodes = df[(df.RDR == 514)]
        #faultCodes.to_csv('selected_codes.csv')
  

Этот код — это то, что я пробовал, но он по-прежнему просто возвращает всю ту же информацию, которая была у меня раньше, вместо того, чтобы найти какой-либо экземпляр 514.

Комментарии:

1. можете ли вы предоставить пример csv и пример того, как должен выглядеть результат.

2. Возможно, поможет регулярное выражение: pandas.pydata.org/pandas-docs/stable/reference/api /…

Ответ №1:

Вот один из возможных подходов, использующий общий Series.apply :

 df = pd.DataFrame({
    'id':['A1','A2','A3'],
     'A1':['(500, 600, 700)','(510, 610, 710)','(520, 620, 720)']
})

df['A1_0'] = df.A1.apply(lambda x: x.replace('(','').replace(')','').split(',')[0])
  

Результаты:

введите описание изображения здесь

Комментарии:

1. С помощью этого метода он всегда будет извлекать информацию, указанную первой в столбце, или есть способ настроить ее поиск по определенным значениям?

2. да, для извлечения 3-го элемента замените split(',')[0] на split(',')[2] , поскольку split каждый элемент помещается в список