Diff, но пользовательская функция Pandas - PullRequest
0 голосов
/ 17 декабря 2018

Панд 'pandas.DataFrame.diff почти делает то, что я пытаюсь сделать.

Из документации

>>> df = pd.DataFrame({'a': [1, 2, 3, 4, 5, 6],
...                    'b': [1, 1, 2, 3, 5, 8],
...                    'c': [1, 4, 9, 16, 25, 36]})
>>> df
   a  b   c
0  1  1   1
1  2  1   4
2  3  2   9
3  4  3  16
4  5  5  25
5  6  8  36

df.diff(axis=0) и df.diff(axis=1) соответственнопроизводит

>>> df.diff()
     a    b     c
0  NaN  NaN   NaN
1  1.0  0.0   3.0
2  1.0  1.0   5.0
3  1.0  1.0   7.0
4  1.0  2.0   9.0
5  1.0  3.0  11.0

>>> df.diff(axis=1)
    a    b     c
0 NaN  0.0   0.0
1 NaN -1.0   3.0
2 NaN -1.0   7.0
3 NaN -1.0  13.0
4 NaN  0.0  20.0
5 NaN  2.0  28.0

То, что делает df.diff, по существу применяет эту функцию

def diff_func(columns):
    return columns[1:] - columns[0:-1]

Я хочу определить свою собственную функцию, которая заменит diff_func.Я хочу «применить» свою собственную функцию (возможно, нелинейную) к последовательным (periods=1) столбцам / строкам.Например, func(x,y) = sin(x)*cos(y), где x,y - последовательные столбцы или строки periods=n

.

1 Ответ

0 голосов
/ 17 декабря 2018

Вы должны рассмотреть shift

df-df.shift(1)
     a    b     c
0  NaN  NaN   NaN
1  1.0  0.0   3.0
2  1.0  1.0   5.0
3  1.0  1.0   7.0
4  1.0  2.0   9.0
5  1.0  3.0  11.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...