我想在Python dataFrame中创建一个新列,但是我的代码无法正常工作。
recession = 0
recovery = 0
if data['excl_flg'] == 0 and data['segment'] != 'ignore':
if (data['vardate'].dt.to_period('M') - '2008-06-30'.dt.to_period('M')) < 0 & (data['vardate'].dt.to_period('M') - '31Mar2010'.dt.to_period('M') >= 0:
recession = 1
elif (data['vardate'].dt.to_period('M') - '31Mar2010'.dt.to_period('M')) < 0 and (data['vardate'].dt.to_period('M') - '30Sep2013'.dt.to_period('M')) >= 0:
recovery = 1
这是我的数据,我正在尝试创建新的列衰退和恢复。任何帮助表示赞赏。
python参考方案
试试这个..如果没有用,但可以达到目的。
数据
excl_flag segment vardate obsdate
0 0 CC_620 2/29/2008 3/31/2008
1 1 CC_cur_It_660 2/28/2009 3/31/2009
2 0 ignore 2/28/2010 3/31/2010
3 0 CC_620 2/28/2011 3/31/2011
4 1 ignore 2/29/2012 3/31/2012
5 0 CC_620 2/28/2013 3/31/2013
6 1 CC_cur_It_660 2/28/2014 3/31/2014
7 0 CC_620 2/28/2015 3/31/2015
8 1 CC_cur_It_660 2/29/2016 3/31/2016
9 0 ignore 2/28/2017 3/31/2017
必要的进口
from datetime import datetime
import pandas as pd
涵盖日期格式
data['vardate'] = pd.to_datetime(data['vardate']).apply(lambda x: x.date())
data['obsdate'] = pd.to_datetime(data['obsdate']).apply(lambda x: x.date())
data['recession'] = 0
data['recovery'] = 0
实施条件
data[((data['excl_flag'] == 0) & (data['segment'] != 'ignore'))].loc[(data['vardate']- datetime.strptime('2008-06-30',"%Y-%m-%d").date()).apply(lambda x: x.days < 0 ) & ((data['vardate'] - datetime.strptime('31Mar2010',"%d%b%Y").date()).apply(lambda x: x.days >=0)), 'recession'] = 1
data[((data['excl_flag'] == 0) & (data['segment'] != 'ignore'))].loc[(data['vardate']- datetime.strptime('31Mar2010',"%d%b%Y").date()).apply(lambda x: x.days < 0 ) & ((data['vardate'] - datetime.strptime('30Sep2013',"%d%b%Y").date()).apply(lambda x: x.days >=0)), 'recovery'] = 1
print(data)
您的结果为零,因为您指定的条件找不到任何接受者
excl_flag segment vardate obsdate recession recovery
0 0 CC_620 2008-02-29 2008-03-31 0 0
1 1 CC_cur_It_660 2009-02-28 2009-03-31 0 0
2 0 ignore 2010-02-28 2010-03-31 0 0
3 0 CC_620 2011-02-28 2011-03-31 0 0
4 1 ignore 2012-02-29 2012-03-31 0 0
5 0 CC_620 2013-02-28 2013-03-31 0 0
6 1 CC_cur_It_660 2014-02-28 2014-03-31 0 0
7 0 CC_620 2015-02-28 2015-03-31 0 0
8 1 CC_cur_It_660 2016-02-29 2016-03-31 0 0
9 0 ignore 2017-02-28 2017-03-31 0 0
R'relaimpo'软件包的Python端口 - python我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。
将字符串分配给numpy.zeros数组[重复] - pythonThis question already has answers here: Weird behaviour initializing a numpy array of string data (4个答案) …
Python:如何根据另一列元素明智地查找一列中的空单元格计数? - pythondf = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice','Jane', 'Alice','Bob', 'Alice'], 'income…
Python pytz时区函数返回的时区为9分钟 - python由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…
Python:同时在for循环中添加到列表列表 - python我想用for循环外的0索引值创建一个新列表,然后使用for循环添加到相同的列表。我的玩具示例是:import random data = ['t1', 't2', 't3'] masterlist = [['col1', 'animal1', 'an…