Расчеты между разными строками - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь запустить цикл над кадром данных pandas, который принимает два аргумента из разных строк. Я пытался использовать функции .iloc и shift, но не смог получить нужный мне результат. Вот простой пример, чтобы лучше объяснить, что я хочу сделать:

dataframe1:

     a  b    c
0  101  1  aaa
1  211  2  dcd
2  351  3  yyy
3  401  5  lol
4  631  6  zzz 

для вышеупомянутого df я хочу создать новый столбец ('d'), который получает разницу между значениями в столбце 'a', только если разница между значениями в столбце 'b' равна 1, если не значение должно быть нулевым. как следующий dataframe2:

     a  b    c  d
0  101  1  aaa  nan
1  211  2  dcd  110
2  351  3  yyy  140
3  401  5  lol  nan
4  631  6  zzz  230 

Есть ли какая-либо разработанная функция, которая может обрабатывать подобные вычисления?

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Вы можете создать групповой ключ

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
0 голосов
/ 02 июля 2018

Попробуйте вот так, используя loc и diff():

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...