Использование лямбды x.split и x.strip для строковых значений в pandas фрейме данных, более эффективное решение? - PullRequest
0 голосов
/ 13 марта 2020

У меня есть очень простое, но длинное решение, чтобы получить этот конечный результат.

enter image description here

с этого кадра данных, разделив «Все» колонка.

enter image description here

Я вручную заменил значения для «Колледжи Вустерского Консорциума:» и «Пять Колледжей Региона Западного Массачусетса:» используя lo c, но мне интересно, мог бы я как-то включить их в первую часть моего кода? Спасибо !!

unitown=pd.read_table('university_towns.txt', header=None).rename(columns={0:'All'})      
unitown['State']=unitown['All'].apply(lambda x: x.split('[edi')[0].strip() if x.count('[edi') else np.NaN).fillna(method="ffill")                       
unitown['RegionName'] = unitown['All'].apply(lambda x: x.split('(')[0].strip() if x.count('(') else np.NaN)
unitown['RegionName2'] = unitown['All'].apply(lambda x: x.split(',')[0].strip() if x.count(',') and "(" not in x.split(',')[0] and "(" not in x.split(',')[1] else np.NaN)
unitown['RegionName']=unitown['RegionName'].mask(pd.isnull, unitown['RegionName2'])
unitown=unitown.drop('RegionName2', axis=1).reindex(columns=['All','State', 'RegionName']).reset_index(drop=True)

unitown.loc[200, 'RegionName'] ='The Colleges of Worcester Consortium:'
unitown.loc[205, 'RegionName'] ='The Five College Region of Western Massachusetts:'

unitown=unitown.drop('All', axis=1).dropna().reset_index(drop=True)

return  unitown
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...