gadzhi15
@gadzhi15

Выборка из Data Frame в Pandas.Как осуществить?

Существует некий data frame. Столбцы содержат: Имя и Фамилия, Возраст, Пол. Мне нужно выяснить какое имя встречается чаще у женского пола. Создаk новый data frame и занеc в него только те имена, у которых в поле возраст стоит F. Data Frame получился следующим:

Nasser, Mrs. Nicholas (Adele Achem)
Sandstrom, Miss. Marguerite Rut
Bonnell, Miss. Elizabeth
Vestrom, Miss. Hulda Amanda Adolfina

Как я понял, имя стоит после слов Miss или Mrs. Теперь возникает проблема, которую не могу решить. Как в Столбце "Имя и Фамилия" в строках удалить слова и символы стоящие до имени? Пробовал с помощью str.lstrip and str.rstrip, но не получается.

P.S. Задача из курса на Cousera
  • Вопрос задан
  • 15146 просмотров
Решения вопроса 1
sgjurano
@sgjurano
Разработчик
Не совсем так. Имя - первое слово после "Miss", "Mrs", если в строке нет круглых скобок.
В целом самый простой вариант для этого задания - выкинуть все до точки, и посмотреть каких слов больше, не разбираясь имя или нет.
Достаточно предположить, что самое распространённое имя встречается чаще самой распространённой фамилии :)

Что-то вроде:
female_names = ['Nasser, Mrs. Nicholas (Adele Achem)', 'Sandstrom, Miss. Marguerite Rut', 'Bonnell, Miss. Elizabeth']
names = {}
for name in female_names:
    for word in a.split('.')[1].replace('(', '').replace(')', '').split():
        names.setdefault(word)
        names[word] += 1
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ilyakmet
Говнокод, но работает.

import pandas

data = pandas.read_csv('titanic.csv', index_col='PassengerId')
data2 = data[data.Sex == 'female']['Name']


C = []
for i in data2:
	if '(' in i:
		if ')' in i.split('(')[1].split(' ')[0]:
			C.append(i.split('(')[1].split(' ')[0].split(')')[0])
		else:
			C.append(i.split('(')[1].split(' ')[0])

	else:
		C.append(i.split('. ')[1].split(' ')[0])

print pandas.DataFrame.from_dict(C)[0].value_counts()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы