我被困在一个数据争论的问题上。以下是我的数据:
Year = ['2010','2011','2012','2013','2014','2015','2010','2011','2014','2015','2016','2010','2011','2012','2015']
Type = ['WAS','WAS','BOS','BOS','WAS','BOS','BOS','BOS','WAS','WAS','BOS','BOS','BOS','BOS','BOS']
ID = ['a','a','a','a','a','a','b','b','b','b','b','c','c','c','c']
df = pd.DataFrame({'ID': ID,'Type': Type,'Year': Year})
df
a WAS 2010
a WAS 2011
a BOS 2012
a BOS 2013
a WAS 2014
and so on...............
我正在努力完成两件事。。。 首先-我想循环遍历dataframe,对于每一行,检查id是否相同,并确定前一个类型是否与当前迭代器类型匹配。然后,创建两个新的二进制变量“WAStoBOS”和“BOStoWAS”,如果没有任何更改或更改与变量名不同,则返回0;如果更改与变量名方向一致,则返回1。你知道吗
例如,输出为:
df
ID Type Year WAStoBOS BOStoWAS
a WAS 2010 0 0
a WAS 2011 0 0
a BOS 2012 1 0
a BOS 2013 0 0
a WAS 2014 0 1
a BOS 2015 1 0
第二: 在同一构造中,按ID查找当前行与上一行之间的差异。你知道吗
数据帧的最终结果是:
df
ID Type Year WAStoBOS BOStoWAS YearDiff
a WAS 2010 0 0 0
a WAS 2011 0 0 1
a BOS 2012 1 0 1
a BOS 2013 0 0 1
a WAS 2014 0 1 1
a BOS 2015 1 0 1
b BOS 2010 0 0 0
b BOS 2011 0 0 1
b WAS 2014 0 1 3
b WAS 2015 0 0 1
b BOS 2016 1 0 1
c BOS 2010 0 0 0
c BOS 2011 0 0 1
c BOS 2012 0 0 1
c BOS 2015 0 0 3
任何帮助都将不胜感激。你知道吗
这个编辑是根据斯科茨的建议。你知道吗
例如,代码错误地将1分配给ID和类型更改的实例。如果一个ID改变了,我们不在乎以前的类型是什么。。。我将稍微更改下面的数据框,以说明ID和类型的更改,同时也显示所需的输出应该是什么。。。你知道吗
df
ID Type Year WAStoBOS BOStoWAS YearDiff
a WAS 2010 0 0 0
a WAS 2011 0 0 1
a BOS 2012 1 0 1
a BOS 2013 0 0 1
a WAS 2014 0 1 1
**a BOS 2015** 1 0 1
**b WAS 2010** 0 0 0
b BOS 2011 1 0 1
b WAS 2014 0 1 3
b WAS 2015 0 0 1
**b WAS 2016** 0 0 1
**c BOS 2010** 0 0 0
c BOS 2011 0 0 1
c BOS 2012 0 0 1
c BOS 2015 0 0 3
在ID和类型发生变化的实例旁边加上星号,以供参考。谢谢你的帮助,我从来没有想过要用assign。你知道吗
正在考虑使用“ID”编辑分配二进制文件:
让我们用一句话来说明:
输出:
相关问题 更多 >
编程相关推荐