Я использую решение @EdChum, но я добавляю управление часовым поясом:
df['UNIXTIME']=pd.DatetimeIndex(pd.to_datetime(pd['UNIXTIME'], unit='ms'))\
.tz_localize('UTC' )\
.tz_convert('America/New_York')
tz_localize
указывает, что временную метку следует рассматривать как относящуюся к «UTC», тогда tz_convert
фактически перемещается дата / время до правильного часового пояса (в данном случае `America / New_York ').
Обратите внимание, что он был преобразован в DatetimeIndex
, потому что методы tz_
работают только с индексом серии. Так как Pandas 0.15 можно использовать .dt
:
df['UNIXTIME']=pd.to_datetime(pd['UNIXTIME'], unit='ms')\
.dt.tz_localize('UTC' )\
.dt.tz_convert('America/New_York')
Я использую ваши две таблицы с примерами (таблица 1 = заказы, таблица 2 = товары). Вот как можно найти номера заказов, которые содержат элементы двора, но не содержат складские элементы:
select o.orderno
from orders o
join items i on i.itemno = o.itemno
group by o.orderno
having count(case when i.location = 'Yard' then 1 end) > 0
and count(case when i.location = 'Warehouse' then 1 end) = 0;
Если вы хотите показать завершенные заказы, используйте вышеуказанный запрос в подзапросе, например:
[111 ]Если вы хотите вместо этого агрегировать по заказу, вы можете соответствующим образом изменить запрос, например:
select
o.orderno,
count(*) as number_of_positions,
sum(o.amount) as number_of_pieces,
sum(o.amount * i.weight) as total_weight
from orders o
join items i on i.itemno = o.itemno
group by o.orderno
having count(case when i.location = 'Yard' then 1 end) > 0
and count(case when i.location = 'Warehouse' then 1 end) = 0
order by o.orderno;
И если вы хотите агрегировать по элементу, вам может понадобиться подзапрос плюс отдельная агрегация.