#python #pandas
#python #pandas
Вопрос:
Я пытаюсь отфильтровать свой фрейм данных (больница) для ситуаций, когда столбец «кровотечение из мозга» имеет значение True. Затем я хочу выполнить поиск в столбце brain_info для определенного слова («рак), а затем создать новый столбец с этим словом («рак»).).
Я делал это раньше в ситуациях без компонента фильтрации, но у меня возникли проблемы с этим сценарием.
#What I have
| brain bleeding| brain info | |final diagnosis|
|---------------|-------------| ----------------
| True | BlahBlahBlah| I want to add this column | |
| True | Cancer | |Cancer |
| False | Cancer | | |
#Creating an empty column in my dataframe for the final diagnosis.
hospital["final_diagnosis"] = ""
#Filter cases where brain cancer is True
filt = (hospital["brain_bleeding"] == True)
#Search for the filtered cases if the diagnosis contains "cancer" and adds it to the corresponding "final_diagnosis" cell, if it is there. This is where my error is?
hospital.loc[filt, 'brain_info'].str.contains("cancer", case=False, na=False), "final diagnosis"] = "cancer"
Может кто-нибудь мне помочь? Спасибо
Ответ №1:
Предполагая, что ваш файл:
brain_bleeding brain_info
True BlahBlahBlah
True Cancer
False Cancer
Вы можете попробовать следующее:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import pandas as pd
hospital = pd.read_csv('file.csv', sep='t')
# add True to final_diagnosis column if brain is bleeding and brain info is cancer
hospital.loc[(hospital['brain_bleeding'] == True) amp;
(hospital['brain_info'] == 'Cancer'), 'final_diagnosis'] = True
hospital['final_diagnosis'].fillna('', inplace=True) # replace NaN with empty strings
print(hospital)
Вывод:
brain_bleeding brain_info final_diagnosis
0 True BlahBlahBlah
1 True Cancer True
2 False Cancer
Примечание: я добавил два условия на основе final_diagnosis
столбца из вашего примера — похоже, вам, возможно, нужно только одно условие (при необходимости освободите два, удалите одно из них).