2017-01-01 3 views
1

1) У меня есть список переменных называется weekday_list, который состоит из строк слов, разделенных запятыми пример: weekday_list = ['Monday', 'Tuesday', 'Wednesday']Python Dataframe: Найти если Значение столбца в списке переменных и Этикетка Соответственно

2) У меня также есть другой аналогичный список переменных называется weekend_list Например: weekend_list = ['Saturday', 'Sunday']

Допустим, у меня есть следующий dataframe:

Date Day_of_Week    
1/5  Monday   
1/6  Tuesday   
1/7  Wednesday 
1/8  Thursday  
1/9  Friday 
1/10 Saturday  
1/11 Sunday 

Я хочу сделать следующее с код Python:

а) Создать новую колонку под названием «Этикетка» с надписью «будний день», если значение в колонке «DAY_OF_WEEK» находится в переменной weekday_list

б) говорит, что «выходные», если значение в столбце «DAY_OF_WEEK» находится в переменной weekend_list

с), наконец, говорит NA, если значение в колонке «DAY_OF_WEEK» находится в переменной ни

* Любая помощь очень ценится

ответ

1

Предполагая, что вы используете pandas, есть несколько разных способов сделать это. Вот интуитивный вариант. Как это работает: использовать метод .isin() создать логический индекс, чтобы указать, если DAY_OF_WEEK не в weekday_list или weekend_list или ни, а затем обновить столбец Ярлыка соответственно с .loc аксессором:

import numpy as np 
df["Label"] = np.nan 
df.loc[df.Day_of_Week.isin(weekday_list), "Label"] = "weekday" 
df.loc[df.Day_of_Week.isin(weekend_list), "Label"] = "weekend" 

enter image description here


Другой вариант один лайнер будет нам е np.where:

df["Label"] = np.where(df.Day_of_Week.isin(weekday_list), "weekday", 
         np.where(df.Day_of_Week.isin(weekend_list), "weekend", 
           None)) 
+1

Это сработало! Спасибо :) – PineNuts0

1

вы можете создать label_dict вместо этого и использовать pd.Series.map

label_dict = {} 
for wd in weekday_list: 
    label_dict[wd] = 'weekday' 
for we in weekend_list: 
    label_dict[we] = 'weekend' 

df.Day_of_Week.map(label_dict) 

0 weekday 
1 weekday 
2 weekday 
3  NaN 
4  NaN 
5 weekend 
6 weekend 
Name: Day_of_Week, dtype: object