#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
каждый элемент помещается в список