Извините за смутное название, которое трудно объяснить. Это проще для отображения.
Я пытаюсь вычесть значения из той же строки, но на основе строк в других столбцах. Вот ввод df:
import pandas as pd
import numpy as np
k = 5
N = 8
d = ({'Time' : np.random.randint(k, k + 100 , size=N),
'Events' : ['ABC','DEF','GHI','JKL','ABC','DEF','GHI','JKL'],
'Number1' : ['xx','xx',1,'xx','xx','xx',2,'xx'],
'Number2' : ['xx',1,'xx',1,'xx',2,'xx',2]})
df = pd.DataFrame(data=d)
Выход:
Events Number1 Number2 Time
0 ABC xx xx 14
1 DEF xx 1 34
2 GHI 1 xx 78
3 JKL xx 1 49
4 ABC xx xx 49
5 DEF xx 2 24
6 GHI 2 xx 19
7 JKL xx 2 67
Я хочу экспортировать значения, основанные на разнице в Time
. Первый столбец разницы во времени будет ABC - DEF
, а второй столбец будет GHI - JKL
.
Мне нужно повторить этот процесс несколько раз. В приведенном выше примере цикл отображается 2 раза. Я могу использовать целые числа для столбцов Number1
и Number2
, но они не в порядке.
Я попытался объединить и заполнить эти столбцы для отображения порядка. А затем используйте этот столбец в качестве справочного.
for col in ['Number2']:
df[col] = df[col].ffill()
Но это создает 5 одинаковых целых чисел, когда мне нужно 4.
Затем я вручную вычел соответствующие значения с помощью среза строки, но это становится очень неэффективным, когда мне приходится делать это много раз.
Можно ли создать цикл, вычитая предполагаемые строки?
Для приведенного выше примера результат будет:
Diff_1 Diff_2
0 -20 29
1 25 -48