Аналогичные результаты с помощью альтернативного стиля могут заключаться в том, чтобы написать функцию, которая выполняет операцию, которую вы хотите в строке, используя синтаксис row['fieldname']
для доступа к отдельным значениям / столбцам, а затем выполнить DataFrame.apply на нем
Это повторяет ответ на вопрос, связанный здесь: pandas создает новый столбец на основе значений из других столбцов
def normalise_row(row):
if row['Currency'] == '$'
...
...
...
return result
df['Normalized'] = df.apply(lambda row : normalise_row, axis=1)
Во-первых, время UTC «Ср 27 марта 06:37:40 2019 по Гринвичу» определенно верно, если рассчитывать по «Ср 26 марта 22:37:40 2019 GMT-08». Как вы думаете, это может быть 5:37?
Объяснение того, почему GMT или UTC не включают DST:
Ни UTC, ни GMT никогда не изменяются для перехода на летнее время (DST). Однако некоторые страны, использующие GMT, переключаются на разные часовые пояса в течение периода DST. Например, AKDT (летнее время Аляски) является одним из часовых поясов GMT-8 во время их летнего времени (летнее летнее время) между 10 марта и 3 ноября 2019 года. Зимой AKST (стандартное время Аляски), которое является GMT-9 используется.
blockquote>Во-вторых, как уже указывалось в другое время ответа QDateTime :: isDaylightTime
always returns false if the Qt::TimeSpec is not Qt::LocalTime or Qt::TimeZone
.Когда вы используете
QDateTime::fromString
с информацией о часовом поясе, как в примере кода , временная спецификация правильно установлена наQt::OffsetFromUTC
. Вы можете создать экземпляр другого объекта QDateTime в то же время, но с TimeSpec в виде Qt :: LocalTime или Qt :: TimeZone. Вы можете, например, преобразовать в местное время с помощью QDateTime :: toLocalTime или либо в Qt :: LocalTime, либо в Qt :: TimeZone с QDateTime :: fromSecsSinceEpoch , который принимает смещения секунд для часового пояса.См. Пример кода ниже. Я нахожусь в Финляндии, где летнее время начинается 31 марта, поэтому вы можете увидеть разницу местного времени, когда используется стандартное время и когда используется летнее время:
QDateTime time = QDateTime::fromString("Wed Mar 26 22:37:40 2019 GMT-08"); qDebug()<<"\nLocal time EET:"; QDateTime localTime = time.toLocalTime(); // This works too, here to local time: //QDateTime localTime = QDateTime::fromSecsSinceEpoch(time.toSecsSinceEpoch()); qDebug()<<localTime.timeSpec(); qDebug()<<localTime.timeZone(); qDebug()<<localTime.timeZoneAbbreviation(); qDebug()<<localTime.toLocalTime().toString(); qDebug()<<localTime.toUTC().toString(); qDebug()<<localTime.isDaylightTime(); time = QDateTime::fromString("Wed Apr 26 22:37:40 2019 GMT-08"); qDebug()<<"\nLocal time EEST:"; localTime = time.toLocalTime(); qDebug()<<localTime.timeSpec(); qDebug()<<localTime.timeZone(); qDebug()<<localTime.timeZoneAbbreviation(); qDebug()<<localTime.toLocalTime().toString(); qDebug()<<localTime.toUTC().toString(); qDebug()<<localTime.isDaylightTime();
Выход:
Local time EET: Qt::LocalTime QTimeZone("Europe/Helsinki") "EET" "Wed Mar 27 08:37:40 2019" "Wed Mar 27 06:37:40 2019 GMT" false Local time EEST: Qt::LocalTime QTimeZone("Europe/Helsinki") "EEST" "Sat Apr 27 09:37:40 2019" "Sat Apr 27 06:37:40 2019 GMT" true