Estou considerando um projeto de análise de dados envolvendo informações sobre transmissões de TV japonesas. Os dados relevantes incluirão horários de transmissão, e alguns deles serão de programas que foram ao ar tarde da noite.
A programação da TV japonesa de fim de noite segue um formato de tempo não padrão chamado sistema de 30 horas (breve explicação em inglês aqui ). A maioria dos horários é dada no horário padrão do Japão, formatado como %H:%M
. Os horários da meia-noite às 6 da manhã, no entanto, são tratados como uma extensão do dia anterior e numerados de acordo, sob a lógica de que é assim que as pessoas que ficam acordadas até tarde os vivenciam. Por exemplo, Macross Frontier foi transmitido em Kansai à 1:25 da manhã, mas foi escrito como 25:25.
Quero usar esses dados em um Pandas ou Polars DataFrame. Teoricamente, eles poderiam ser deixados como uma string, mas seria mais útil convertê-los para um formato padrão para datetimes -- seja o tipo interno do Python ou os tipos usados no NumPy ou Polars. Uma abordagem simples poderia ser:
from datetime import date, time, datetime
from zoneinfo import ZoneInfo
def process_30hour(d: date, t: str):
h, m = [int(n) for n in t.split(':')] # assumes format 'HH:MM' for t
if h > 23:
h -= 24
d += 1
return datetime.combine(d, time(h, m), ZoneInfo('Japan'))
Isso poderia então ser aplicado a um DataFrame inteiro com DataFrame.apply()
. Pode haver uma maneira mais performática, no entanto, especialmente considerando os recursos de vetorização de DataFrames -- ambas as bibliotecas recomendam evitar DataFrame.apply()
se houver uma alternativa.