2016-09-03 2 views
0

У меня есть dataframe.как добавить столбец, используя условия другого столбца

df=pd.DataFrame({'month':np.arange(1,8)}) 

Итак, я хотел бы добавить столбец, используя «месяц» столбцы

if 'month'=1,2,3 the elements = 'term1' 
    'month'=4,5  the elements = 'term2' 
    'month'=6,7  the elements = 'term3' 

Я хотел бы получить результат ниже

 month term 
0  1 term1 
1  2 term1 
2  3 term1 
3  4 term2 
4  5 term2 
5  6 term3 
6  7 term3 

Как я могу получить этот результат? может быть, мы могли бы получить этот результат легкий и простой способ ....

ответ

1

Я хотел бы пойти на декларативно через dict, прост в чтении и легко применять. Вы можете сгенерировать свой словарь условий замены программно, если условия замены становятся большими или зависят от других входов:

conditions = {1:'term1', 2:'term1', 3:'term1', 
       4:'term2', 5:'term2', 
       6:'term3', 7:'term3'} 

df['term'] = df.replace(conditions) 
df 

     month term 
0  1 term1 
1  2 term1 
2  3 term1 
3  4 term2 
4  5 term2 
5  6 term3 
6  7 term3 
+0

очень простой! как я могу добавить этот столбец в df? – Heisenberg

+1

как обычно: 'df ['term'] = df.replace (условия)' – Boud

+0

спасибо! так, предположим, месяц> 7 = term4 как я могу описать? – Heisenberg

1

Использование numpy.where и Series.isin() метод может быть один из вариантов, чтобы сделать это:

import numpy as np 
import pandas as pd 
df["term"] = np.where(df.month.isin([1,2,3]), "term1", \ 
         np.where(df.month.isin([4,5]), "term2", "term3")) 

df 
# month term 
#0 1 term1 
#1 2 term1 
#2 3 term1 
#3 4 term2 
#4 5 term2 
#5 6 term3 
#6 7 term3 
Смежные вопросы