Создание нового столбца на основе значения в другом столбце - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь создать новые столбцы объектов на основе значений в другом столбце. Итак, у меня есть столбец с комментариями, и если они содержат URL-адрес, я хочу вывести 1 в новый столбец или же вывести 0, так что это будет создание двоичного объекта.

Text                                                        Contains_Url

Buy round lot on the open MT @WSJD #AAPL                               1
stock briefly dove 6.4% today. Analysts 
not sure why https://blogs.wsj.com/moneybeat/
2014/12/01/apple-crash-catches-wall-street-off-guard/

@apple Contact sync between Yosemite and iOS8 is                       0
seriously screwed up. It used to be much more stable 
in the past. #icloud #isync

Таким образом, будут строки, подобные этой, и я хотел бы создать новый столбец в кадре данных с 1 или 0 на основе текстового столбца, если он имеет URL-адрес или нет. Просто чтобы проверить количество твитов с URL-адресами по сравнению с остальным набором данных, я сделал

data.shape
(3804, 12)
data[data.text.str.contains("http")].shape
(2130, 12)

Таким образом, он точно показывает количество строк с URL-адресом. Моя идея состояла в том, чтобы создать функцию, в которой я могу это сделать, и применить ее с помощью lambda

def contains_url(row):
if data[data.text.str.contains("http")]:
    return 1
else:
    return 0

data['contains_url'] = data.apply (lambda row: contains_url(row),axis=1)

ValueError: ('The truth value of a DataFrame is ambiguous. Use a.empty,
a.bool(), a.item(), a.any() or a.all().', 'occurred at index 0')

Но это дает мне эту ошибку выше. Любая помощь будет оценена. Спасибо!

1 Ответ

0 голосов
/ 28 октября 2018

Я думаю, что вы можете сделать это гораздо эффективнее без apply, просто используя логическое значение, полученное из str.contains('http'), и приведя его к int:

data['contains_url'] = data['Text'].str.contains('http').astype(int)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...