Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 最好使用列表理解从数据帧中的间隔变量创建新的顺序变量_Python_Pandas_List Comprehension - Fatal编程技术网

Python 最好使用列表理解从数据帧中的间隔变量创建新的顺序变量

Python 最好使用列表理解从数据帧中的间隔变量创建新的顺序变量,python,pandas,list-comprehension,Python,Pandas,List Comprehension,我想基于现有的间隔变量在我的数据框架中创建一个新的分类变量,该变量只是将唯一值聚合到新变量的一组较小的级别/值中。 我认为使用下面的列表理解将是直接的,但我得到以下错误: File "<ipython-input-10-c03af1b75c0c>", line 3 'set_2' elif x in (2000,2001,2002,2003,2004) ^ SyntaxError: invalid syntax 使用np。选择 cond1 = df

我想基于现有的间隔变量在我的数据框架中创建一个新的分类变量,该变量只是将唯一值聚合到新变量的一组较小的级别/值中。 我认为使用下面的列表理解将是直接的,但我得到以下错误:

  File "<ipython-input-10-c03af1b75c0c>", line 3
    'set_2' elif x in (2000,2001,2002,2003,2004)
          ^
SyntaxError: invalid syntax 

使用
np。选择

cond1 = df['year'].between(1995,1999)
cond2 = df['year'].between(2000,2004)
cond3 = df['year'].between(2005,2009)
cond4 = df['year'].between(2010,2014)

df['new_val'] = np.select((cond1,cond2,cond3,cond4),
                          ('val1','val2','val3','val4'),
                          default='val5')
或使用
pd.cut

df['new_val'] = pd.cut(df['year'], 
                       bins= list(np.arange(1994,2019,5)) + np.inf,
                       ['val1','val2','val3','val4','val5']
                      )

这也可能在另一方面帮助您:

def conditions(row):
    if row['year'] in [1995, 1996, 1997, 1998, 1999]:
        return 'value_1'
    elif row['year'] in [2000, 2001, 2002, 2003, 2004]:
        return 'value_2'
    elif row['year'] in [2005, 2006, 2007, 2008, 2009]:
        return 'value_3'
    elif row['year'] in [2010, 2011, 2012, 2013, 2014]:
        return 'value_4'
    else:
        return 'value_5'


df["new_variable"] = df.apply(conditions, axis=1)
输出:

   year new_variable
0  1994      value_5
1  1995      value_1
2  1996      value_1
3  2000      value_2
4  2010      value_4
5  2015      value_5

请提供一个最小的示例(意味着我们可以运行一些最小的数据帧来重现您的错误),以便我们能够回答您的问题。
   year new_variable
0  1994      value_5
1  1995      value_1
2  1996      value_1
3  2000      value_2
4  2010      value_4
5  2015      value_5