如何使用其他列的条件添加列

时间:2016-09-03 02:19:53

标签: python pandas

我有一个数据框。

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

我怎样才能得到这个结果? 也许我们可以轻松简单地获得这个结果....

2 个答案:

答案 0 :(得分:1)

使用numpy.whereSeries.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

答案 1 :(得分: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