Построить DataFrame в диапазоне временных индексов

Это довольно просто сделать с простым Ruby, что может быть проще, чем пытаться использовать SQL. Вот что вам поможет:

require 'ostruct'

rows = [
  OpenStruct.new(name: 'USR-A', office: 'LA-HQ', device: 'MACBOOK'),
  OpenStruct.new(name: 'USR-B', office: 'LA-HQ', device: 'MACBOOK'),
  OpenStruct.new(name: 'USR-A', office: 'LA-HQ', device: 'IMAC'),
  OpenStruct.new(name: 'USR-B', office: 'NY-HQ', device: 'IMAC'),
  OpenStruct.new(name: 'USR-B', office: 'NY-HQ', device: 'IPHONE'),
]

groups = rows.group_by { |i| "#{i.name}#{i.office}" }.values
groups = groups.map do |group|
  device = group.map(&:device).join(", ")
  OpenStruct.new(
    name: group.first.name,
    office: group.first.office,
    device: device
  )
end
p groups

=> [#<OpenStruct name="USR-A", office="LA-HQ", device="MACBOOK, IMAC">,
    #<OpenStruct name="USR-B", office="LA-HQ", device="MACBOOK">,
    #<OpenStruct name="USR-B", office="NY-HQ", device="IMAC, IPHONE">]
1
задан eyllanesc 18 January 2019 в 22:05
поделиться

2 ответа

Если вы хотите построить месяц, вы можете сделать

data.loc['2018-02',"X"].plot()

6 месяцев

data.loc['2018-02':'2018-08',"X"].plot()

, и та же логика применяется для других диапазонов

0
ответ дан Yuca 18 January 2019 в 22:05
поделиться

Вам может понадобиться сделать еще один шаг обработки для вашего индекса, чтобы убедиться, что вы имеете дело с объектами datetime, а не со строками.

new_data = (
    data
    .assign(datetime=lambda df: pandas.to_datetime(df.index))
    .set_index('datetime')
)

new_data["X"].plot()

Это должно приблизить нас к тому, что вы хотите, но я не проверял это на данных с вашим форматом даты.

0
ответ дан aorr 18 January 2019 в 22:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: