不同行之间的计算

时间:2018-07-02 18:14:33

标签: python pandas dataframe rows

我尝试在需要来自不同行的两个参数的pandas数据帧上运行循环。我尝试使用.iloc和shift函数,但未获得所需的结果。 这是一个简单的示例,可以更好地解释我想做什么:

dataframe1:

error.log

对于上述df,我想创建一个新列('d'),仅当'b'列中的值之间的差异等于1时才获取该列中的差异。值应为null。类似于以下dataframe2:

sub.py

有没有设计好的函数可以处理这种计算?

2 个答案:

答案 0 :(得分:3)

使用locdiff()尝试这样:

df.loc[df.b.diff() == 1, 'd'] = df.a.diff()
>>> df
     a  b    c      d
0  101  1  aaa    NaN
1  211  2  dcd  110.0
2  351  3  yyy  140.0
3  401  5  lol    NaN
4  631  6  zzz  230.0

答案 1 :(得分:2)

您可以创建一个组密钥

df1.groupby(df1.b.diff().ne(1).cumsum()).a.diff()
Out[361]: 
0      NaN
1    110.0
2    140.0
3      NaN
4    230.0
Name: a, dtype: float64