Сравните строки попарно и вычислите разницу [дубликат]Python

Программы на Python
Ответить
Anonymous
 Сравните строки попарно и вычислите разницу [дубликат]

Сообщение Anonymous »

У меня есть этот фрейм данных. Я хочу сравнить дату, а затем рассчитать разницу во времени в эту дату. Например, date[0] == date[1] имеет значение True, тогда time[0] — time[1]. Если есть 4 записи даты, например 19 мая 2020, выполните (время[2] - время[3]) + (время[4] - время[5]). Но если количество записей даты нечетное, например, для 2022-05-12 есть только 3 записи, то ничего не делайте.
Date Time
0 2022-05-20 17:07:00
1 2022-05-20 09:14:00
2 2022-05-19 18:56:00
3 2022-05-19 13:53:00
4 2022-05-19 13:52:00
5 2022-05-19 09:34:00
6 2022-05-18 18:25:00
7 2022-05-18 12:53:00
8 2022-05-18 12:02:00
9 2022-05-18 10:01:00
10 2022-05-17 18:06:00
11 2022-05-17 12:23:00
12 2022-05-17 12:11:00
13 2022-05-17 09:57:00
14 2022-05-16 18:44:00
15 2022-05-16 09:57:00
16 2022-05-13 18:21:00
17 2022-05-13 12:42:00
18 2022-05-13 12:05:00
19 2022-05-13 10:02:00
20 2022-05-12 18:13:00
21 2022-05-12 13:06:00
22 2022-05-12 09:45:00
23 2022-05-11 18:04:00
24 2022-05-11 12:23:00
25 2022-05-11 11:59:00
26 2022-05-11 10:01:00
27 2022-05-10 17:33:00
28 2022-05-10 12:29:00

Я пробовал использовать вложенный цикл for, но не смог выяснить, как меняется индексация при появлении нечетных записей.
for i in range(len(df.Date)-1):
for j in range(1,len(df.Date),2):
if df.Date == df.Date[j]:
print(df.Date, df.Date[j],df.Time,df.Time[j])
i += 2
else:
print(i,j)
print(df.Date, df.Date[j],df.Time,df.Time[j])
i = j
j = j+1
print(i,j)
break

Результат неверен, и я не знаю, как исправить.
Полный ожидаемый результат:
Изображение
Проследил за комментарием и выполнил df.to_dict() и получил:
{'Date': {0: Timestamp('2022-05-20 00:00:00'), 1: Timestamp('2022-05-20 00:00:00'), 2: Timestamp('2022-05-19 00:00:00'), 3: Timestamp('2022-05-19 00:00:00'), 4: Timestamp('2022-05-19 00:00:00'), 5: Timestamp('2022-05-19 00:00:00'), 6: Timestamp('2022-05-18 00:00:00'), 7: Timestamp('2022-05-18 00:00:00'), 8: Timestamp('2022-05-18 00:00:00'), 9: Timestamp('2022-05-18 00:00:00'), 10: Timestamp('2022-05-17 00:00:00'), 11: Timestamp('2022-05-17 00:00:00'), 12: Timestamp('2022-05-17 00:00:00'), 13: Timestamp('2022-05-17 00:00:00'), 14: Timestamp('2022-05-16 00:00:00'), 15: Timestamp('2022-05-16 00:00:00'), 16: Timestamp('2022-05-13 00:00:00'), 17: Timestamp('2022-05-13 00:00:00'), 18: Timestamp('2022-05-13 00:00:00'), 19: Timestamp('2022-05-13 00:00:00'), 20: Timestamp('2022-05-12 00:00:00'), 21: Timestamp('2022-05-12 00:00:00'), 22: Timestamp('2022-05-12 00:00:00'), 23: Timestamp('2022-05-11 00:00:00'), 24: Timestamp('2022-05-11 00:00:00'), 25: Timestamp('2022-05-11 00:00:00'), 26: Timestamp('2022-05-11 00:00:00'), 27: Timestamp('2022-05-10 00:00:00'), 28: Timestamp('2022-05-10 00:00:00')}, 'Time': {0: datetime.time(17, 7), 1: datetime.time(9, 14), 2: datetime.time(18, 56), 3: datetime.time(13, 53), 4: datetime.time(13, 52), 5: datetime.time(9, 34), 6: datetime.time(18, 25), 7: datetime.time(12, 53), 8: datetime.time(12, 2), 9: datetime.time(10, 1), 10: datetime.time(18, 6), 11: datetime.time(12, 23), 12: datetime.time(12, 11), 13: datetime.time(9, 57), 14: datetime.time(18, 44), 15: datetime.time(9, 57), 16: datetime.time(18, 21), 17: datetime.time(12, 42), 18: datetime.time(12, 5), 19: datetime.time(10, 2), 20: datetime.time(18, 13), 21: datetime.time(13, 6), 22: datetime.time(9, 45), 23: datetime.time(18, 4), 24: datetime.time(12, 23), 25: datetime.time(11, 59), 26: datetime.time(10, 1), 27: datetime.time(17, 33), 28: datetime.time(12, 29)}}


Подробнее здесь: https://stackoverflow.com/questions/725 ... difference
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»