Панд '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
.