Вычтите последовательные столбцы в кадре данных 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