Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.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 - Fatal编程技术网

Python 查找和返回布尔值

Python 查找和返回布尔值,python,pandas,Python,Pandas,我有下面的数据框架,我的目标是找出一只股票是否从一个时期持有到下一个时期。为此,我创建了两个查找代码str\u previous\u previous\u period\u code和str\u current\u period\u code,它们基于ticker的串联和date的字符串转换 我需要一个新的列来返回布尔值1或0,如果它是在上一个期间保存的。因此,逻辑是: 查找str\u上一个\u期间\u代码 如果在数据帧中找到,则df['value']=1,否则df['value']=0 我

我有下面的数据框架,我的目标是找出一只股票是否从一个时期持有到下一个时期。为此,我创建了两个查找代码
str\u previous\u previous\u period\u code
str\u current\u period\u code
,它们基于
ticker
的串联和
date
的字符串转换

我需要一个新的列来返回布尔值
1
0
,如果它是在上一个期间保存的。因此,逻辑是:

  • 查找
    str\u上一个\u期间\u代码
  • 如果在数据帧中找到,则
    df['value']=1
    ,否则
    df['value']=0
我已尝试使用.lookup()启动逻辑,如下所示:

df['value'] = df.lookup(df['str_previous_period_code'], df['str_current_period_code'])
但是,我得到以下关键错误:

KeyError: 'CXP2001-04-27' 

我想您可以使用以下任一方法进行查找:

  • 使用
    df['str\u current\u period\u code']
    获得的
    系列的方法:
#为避免在每次迭代时调用tolist方法:
上一个周期代码=df['str上一个周期代码'].tolist()
#根据您的逻辑填写“值”列:
df['value']=df['str\u current\u period\u code']。应用(
lambda x:1如果x在上一个\u期间\u代码0)
  • df['str\u current\u period\u code']
    Series
    ,但结果将为
    True
    /
    False
    ,而不是您要求的1和0(此方法可能比第一种方法更快):

请举例说明获得1的条件是什么,获得0的条件是什么?
    ticker  date    close   next_period_close   NATR    score   return  str_previous_period_code    str_current_period_code
0   CXP 2001-04-27  4.615000    4.585000    3.700552    9   -0.006501   CXP2001-04-20   CXP2001-04-27
1   TOL 2001-04-27  1.851068    1.862219    3.174988    9   0.006024    TOL2001-04-20   TOL2001-04-27
2   WOW 2001-04-27  8.832543    8.941464    2.560720    9   0.012332    WOW2001-04-20   WOW2001-04-27
3   WES 2001-04-27  13.205642   12.771989   2.448139    9   -0.032839   WES2001-04-20   WES2001-04-27
4   PPT 2001-04-27  40.000000   40.400000   2.364224    9   0.010000    PPT2001-04-20   PPT2001-04-27
5   FLT 2001-04-27  23.398888   23.309237   2.281367    9   -0.003831   FLT2001-04-20   FLT2001-04-27
6   MIM 2001-04-27  1.260000    1.380000    5.696656    8   0.095238    MIM2001-04-20   MIM2001-04-27
7   ALL 2001-04-27  6.386961    6.113234    5.476623    8   -0.042857   ALL2001-04-20   ALL2001-04-27
8   CXP 2001-05-04  4.585000    4.650000    3.685788    9   0.014177    CXP2001-04-27   CXP2001-05-04
9   TOL 2001-05-04  1.862219    1.866679    3.139378    9   0.002395    TOL2001-04-27   TOL2001-05-04
10  WES 2001-05-04  12.771989   13.321481   2.572519    9   0.043023    WES2001-04-27   WES2001-05-04
11  WOW 2001-05-04  8.941464    9.456366    2.552963    9   0.057586    WOW2001-04-27   WOW2001-05-04
12  PPT 2001-05-04  40.400000   39.991000   2.313191    9   -0.010124   PPT2001-04-27   PPT2001-05-04
13  FLT 2001-05-04  23.309237   23.194881   2.262463    9   -0.004906   FLT2001-04-27   FLT2001-05-04
14  ALL 2001-05-04  6.113234    6.200552    5.699601    8   0.014283    ALL2001-04-27   ALL2001-05-04
15  MIM 2001-05-04  1.380000    1.340000    5.289190    8   -0.028986   MIM2001-04-27   MIM2001-05-04
df['value'] = df['str_current_period_code'].isin(df['str_previous_period_code'])