Вычтите последовательные столбцы в кадре данных Pandas или Pyspark

Я хотел бы выполнить следующую операцию в фрейме данных pandas или pyspark, но я все еще не нашел решения.

Я хочу вычесть значения из последовательных столбцов в кадре данных.

Операцию, которую я описываю, можно увидеть на изображении ниже.

Ввод и вывод данных

Имейте в виду, что у выходного информационного кадра не будет никаких значений в первом столбце, поскольку первый столбец во входной таблице не может быть вычтен из предыдущего, поскольку он не существует.

2 ответа

Решение

diff имеет axis параметр, так что вы можете просто сделать это за один шаг:

In [63]:
df = pd.DataFrame(np.random.rand(3, 4), ['row1', 'row2', 'row3'], ['A', 'B', 'C', 'D'])
df

Out[63]:
             A         B         C         D
row1  0.146855  0.250781  0.766990  0.756016
row2  0.528201  0.446637  0.576045  0.576907
row3  0.308577  0.592271  0.553752  0.512420

In [64]:
df.diff(axis=1)

Out[64]:
       A         B         C         D
row1 NaN  0.103926  0.516209 -0.010975
row2 NaN -0.081564  0.129408  0.000862
row3 NaN  0.283694 -0.038520 -0.041331
df = pd.DataFrame(np.random.rand(3, 4), ['row1', 'row2', 'row3'], ['A', 'B', 'C', 'D'])
df.T.diff().T

введите описание изображения здесь

Другие вопросы по тегам