Python Неправильно вычисляется Unix с даты и времени - PullRequest
0 голосов
/ 11 февраля 2020

Нужна помощь с этим преобразованием. месяц день год часы минуты секунды до UNIX Код выполняется, но мы получаем неправильные преобразования.
Основной столбец - это наш столбец DateTime.

Импорт

import os
import pathlib
import chardet
import datetime
import pandas as pd
import time
import datetime
from datetime import timezone

Преобразование во время Unix

print('[Time Unix] Generating time unix from "' + main_column + '" column...')
time_unix = []
format = '%m/%d/%Y %I:%M:%S %p'
for col_val in final[main_column]:
    dt = datetime.datetime.strptime(col_val, format)
    unix_time = dt.replace(tzinfo=timezone.utc).timestamp()
    time_unix.append(int(unix_time))

final['Time Unix'] = pd.Series(time_unix)

# Sort based on the mentioned column name
print('[sorting] Sorting rows based on the "' + main_column + '" column...')
final.sort_values(ascending=True, inplace=True, by=['Time Unix'])

, но ... посмотрите на результат ... совершенно другой DateTime с тем же unix значения.

DateTime | Unix

2/24/2019 2:17:46 PM    1551017867
2/24/2019 9:07:19 PM    1551017867
2/24/2019 5:40:39 PM    1551017867
2/24/2019 2:17:47 PM    1551017868
2/24/2019 9:07:20 PM    1551017868
2/24/2019 5:40:40 PM    1551017868
2/24/2019 2:17:48 PM    1551017869
2/24/2019 9:07:21 PM    1551017869
2/24/2019 5:40:41 PM    1551017869

Я не вижу никакой картины в этой ошибке. Надеемся на помощь с форматированием этого преобразования.
Спасибо

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

У меня отлично работает:

import pandas as pd
import datetime
from datetime import timezone

time_unix = []
final = pd.DataFrame({'main_column': ['2/24/2019 2:17:46 PM',
                                    '2/24/2019 9:07:19 PM',
                                    '2/24/2019 5:40:41 PM']})

format = '%m/%d/%Y %I:%M:%S %p'
for col_val in final['main_column']:
    dt = datetime.datetime.strptime(col_val, format)
    unix_time = dt.replace(tzinfo=timezone.utc).timestamp()
    time_unix.append(int(unix_time))

final['Time Unix'] = pd.Series(time_unix)
final.sort_values(ascending=True, inplace=True, by=['Time Unix'])
print(final)

Вывод:

            main_column   Time Unix
0  2/24/2019 2:17:46 PM  1551017866
2  2/24/2019 5:40:41 PM  1551030041
1  2/24/2019 9:07:19 PM  1551042439
0 голосов
/ 11 февраля 2020

Очевидно, ошибка заключалась еще в том, что когда мы объединяли несколько CSV.
Спасибо, что нашли время, чтобы подтвердить, что код был верным.

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