Python 根据其他列中的行值计算dataframe中的行值之间的差异
如何计算每年行值之间的差异,并在年度发生变化时重新开始计算 我有以下数据帧:Python 根据其他列中的行值计算dataframe中的行值之间的差异,python,pandas,Python,Pandas,如何计算每年行值之间的差异,并在年度发生变化时重新开始计算 我有以下数据帧: df = pd.DataFrame({'year': [2010, 2010, 2010, 2011, 2011, 2011], 'measurement1': [1, 3, 5, 2, 3, 6], 'measurement2': [2, 1, 1, 3, 2, 4]}) df_result = pd.DataFrame({'year': [2010, 2
df = pd.DataFrame({'year': [2010, 2010, 2010, 2011, 2011, 2011],
'measurement1': [1, 3, 5, 2, 3, 6],
'measurement2': [2, 1, 1, 3, 2, 4]})
df_result = pd.DataFrame({'year': [2010, 2010, 2010, 2011, 2011, 2011],
'measurement1': [0, 2, 2, 0, 1, 3],
'measurement2': [0, 1, 0, 0, 1, 2]})
将年份设置为数据框架中的指数,以便计算年份之间的差异。
df=df.set_索引('year')
我希望得到的结果是以下数据帧:
df = pd.DataFrame({'year': [2010, 2010, 2010, 2011, 2011, 2011],
'measurement1': [1, 3, 5, 2, 3, 6],
'measurement2': [2, 1, 1, 3, 2, 4]})
df_result = pd.DataFrame({'year': [2010, 2010, 2010, 2011, 2011, 2011],
'measurement1': [0, 2, 2, 0, 1, 3],
'measurement2': [0, 1, 0, 0, 1, 2]})
您可以看到,每年计算行之间的差异。当我们对新的一年进行测量时,计算又从新开始。如果使用.diff方法,还将计算连续年份值之间的差值
如何计算仅在一年内测量的值之间的差异
非常感谢 使用pandas
groupby
按年份分组,然后应用diff()
使用pandas
groupby
按年份分组,然后应用diff()
由于转换并不简单,我将定义一个函数:
def delta(x):
y = (x.shift().bfill() - x)
return(np.where(y>=0, y, -y))
然后,groupby
transform
将对作业执行以下操作:
df = pd.DataFrame({'year': [2010, 2010, 2010, 2011, 2011, 2011],
'measurement1': [1, 3, 5, 2, 3, 6],
'measurement2': [2, 1, 1, 3, 2, 4]}).set_index('year')
df_resul = df.groupby(level=0).transform(delta).astype(int)
它给出:
measurement1 measurement2
year
2010 0 0
2010 2 1
(只需使用reset\u index
即可获得预期的数据帧)由于转换并不简单,我将定义一个函数:
def delta(x):
y = (x.shift().bfill() - x)
return(np.where(y>=0, y, -y))
然后,groupby
transform
将对作业执行以下操作:
df = pd.DataFrame({'year': [2010, 2010, 2010, 2011, 2011, 2011],
'measurement1': [1, 3, 5, 2, 3, 6],
'measurement2': [2, 1, 1, 3, 2, 4]}).set_index('year')
df_resul = df.groupby(level=0).transform(delta).astype(int)
它给出:
measurement1 measurement2
year
2010 0 0
2010 2 1
(只需使用reset_index
即可获得预期的数据帧)