我有一个不平衡的 Pandas MultiIndex DataFrame,其中每一行都存储一个firm-year观察值。样本期(变量year)范围从 2013 年到 2017 年。数据集包括变量,如果事件发生在给定 中event,则设置为变量。1year
样本数据集:
#Create dataset
import pandas as pd
df = pd.DataFrame({'id' : [1,1,1,1,1,2,2,2,2,3,3,4,4,4,5,5,5,5],
'year' : [2013,2014,2015,2016,2017,2014,2015,2016,2017,
2016,2017,2013,2014,2015,2014,2015,2016,2017],
'event' : [1,0,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,1]})
df.set_index(['id', 'year'], inplace = True)
df.sort_index(inplace = True)
我想status根据现有列创建一个新列event,如下所示:每当事件在列中第一次发生时,列event的值status应该从0到更改1为所有后续年份(包括事件发生的年份)。
具有预期变量的 DataFrame status:
event status
id year
1 2013 1 1
2014 0 1
2015 0 1
2016 0 1
2017 0 1
2 2014 0 0
2015 0 0
2016 1 1
2017 0 1
3 2016 1 1
2017 0 1
4 2013 0 0
2014 1 1
2015 0 1
5 2014 0 0
2015 0 0
2016 0 0
2017 1 1
到目前为止,我还没有找到任何有用的解决方案,所以任何建议都将不胜感激。谢谢!
长风秋雁
翻阅古今
呼唤远方
相关分类