Разделите столбцы в пандах с помощью str.split и сохраните значения - PullRequest
0 голосов
/ 25 сентября 2018

Таким образом, я застрял с проблемой здесь:

У меня есть pandas dataframe, который выглядит следующим образом:

ID Name    Value
0  Peter   21,2
1  Frank   24
2  Tom     23,21/23,60 
3  Ismael  21,2/ 21,54
4  Joe     23,1

and so on...

Я пытаюсь разделить «Значение»столбец косой чертой вперед (/), но сохраните все значения, которые не имеют такого шаблона.

Как здесь:

ID Name    Value
0  Peter   21,2
1  Frank   24
2  Tom     23,21
3  Ismael  21,2
4  Joe     23,1

Как мне этого добиться?Я попробовал метод str.split, но он не дает мне решение, которое я хочу.Вместо этого он возвращает NaN, как видно из следующего.

My Code: df['Value']=df['value'].str.split('/', expand=True)[0]

Returns:

ID Name    Value
0  Peter   NaN
1  Frank   NaN
2  Tom     23,21
3  Ismael  21,2
4  Joe     Nan

Все, что мне нужно, - это самое первое значение до прихода '/'.

Ценю любую помощь!

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

pandas.Series.str.replace с регулярным выражением

df.assign(Value=df.Value.str.replace('/.*', ''))

   ID    Name  Value
0   0   Peter   21,2
1   1   Frank     24
2   2     Tom  23,21
3   3  Ismael   21,2
4   4     Joe   23,1

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

df['Value'] = df.Value.str.replace('/.*', '')
0 голосов
/ 25 сентября 2018

Удалить expand=True для списков возврата и добавить str[0] для выбора первого значения:

df['Value'] = df['Value'].str.split('/').str[0]
print (df)
   ID    Name  Value
0   0   Peter   21,2
1   1   Frank     24
2   2     Tom  23,21
3   3  Ismael   21,2
4   4     Joe   23,1

Если важна производительность, используйте понимание списка:

df['Value'] = [x.split('/')[0] for x in df['Value']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...