Python 如何检查数据帧中不同行之间的值更改并在新列中表示它?
各位 我不熟悉python和pandas,我遇到了一个问题,我需要检查某个列的值是否随时间变化(不同的行)。我完全不知道如何解决这个问题 我创建了一个简单的示例来清楚地说明它:Python 如何检查数据帧中不同行之间的值更改并在新列中表示它?,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,各位 我不熟悉python和pandas,我遇到了一个问题,我需要检查某个列的值是否随时间变化(不同的行)。我完全不知道如何解决这个问题 我创建了一个简单的示例来清楚地说明它: df = pd.DataFrame({"Year":[2011,2012,2013,2014,2011,2014,2014,2014,2011,2012,2012,2015],"Product":['A','A','A','A','B','B','B','B','C','C
df = pd.DataFrame({"Year":[2011,2012,2013,2014,2011,2014,2014,2014,2011,2012,2012,2015],"Product":['A','A','A','A','B','B','B','B','C','C','C','C'],"Value1":[1,1,1,0,1,1,0,1,0,1,1,1]},index=['A','A','A','A','B','B','B','B','C','C','C','C'])
df
Year Product Value1
A 2011 A 1
A 2012 A 1
A 2013 A 1
A 2014 A 0
B 2011 B 1
B 2014 B 1
B 2014 B 0
B 2014 B 1
C 2011 C 0
C 2012 C 1
C 2012 C 1
C 2015 C 1
我想根据不同的产品检查不同年份的价值变化,以下是要检查的逻辑:
df2 = pd.DataFrame({"Year":[2011,2012,2013,2014,2011,2014,2012,2012,2015],"Product":['A','A','A','A','B','B','C','C','C'],"Value1":[1,1,1,0,1,0,1,1,1],'result':[0,0,0,1,0,1,0,0,0]},index=['A','A','A','A','B','B','C','C','C'])
df2
Year Product Value1 result
A 2011 A 1 0
A 2012 A 1 0
A 2013 A 1 0
A 2014 A 0 1
B 2011 B 1 0
B 2014 B 0 1
C 2012 C 1 0
C 2012 C 1 0
C 2015 C 1 0
我尝试使用pd.apply
来解决这个问题,但我不知道如何获取另一行值并进行比较以给出一个新值
有人能帮我吗?你的逻辑很复杂,所以我分阶段建立了它
df['result'] = abs(df['Value1'].diff()).bfill().astype(int)
apply()
和fact have first Year Product Value1 result
A 2011 A 1 0
A 2012 A 1 0
A 2013 A 1 0
A 2014 A 0 1
B 2011 B 1 0
B 2014 B 0 1
C 2011 C 0 0
C 2012 C 1 0
C 2012 C 1 0
C 2015 C 1 0
productA 2014在2014年是0非常感谢!所提供的答案被标记为低质量职位,以供审查。以下是一些指导原则。这一答案可以从解释中获益。仅代码答案不被视为“好”答案。
Year Product Value1 result
A 2011 A 1 0
A 2012 A 1 0
A 2013 A 1 0
A 2014 A 0 1
B 2011 B 1 0
B 2014 B 0 1
C 2011 C 0 0
C 2012 C 1 0
C 2012 C 1 0
C 2015 C 1 0