Как создать несколько отдельных списков во время итерации по столбцу фрейма данных - PullRequest
0 голосов
/ 08 июля 2020

Я работаю с фреймом данных, в котором есть столбец для времени (в формате ГГГГ / ММ / ДД / ЧЧ / ММ / СС) и еще один столбец для скорости ветра, которые собирались каждую секунду в течение нескольких месяцев.

Я хочу, чтобы мой код генерировал списки, которые группируют все значения скорости ветра по дням, когда они были приняты.

day_number = 0
for index, row in df.iterrows():
  #NOTE: I only run the if clause on the first 78450 rows of data
  #because I get an error from the last line of code
  if index < 78450:
    if time[index][0:10] == time[index+1][0:10]:
      #[here I want to generate lists grouping my wind speed values]
    else:
      day_number += 1

Есть ли способ сгенерировать несколько списков из одного для л oop? Или есть некая Pandas функция, которая может это сделать?

Спасибо

1 Ответ

0 голосов
/ 08 июля 2020

Сгенерируйте синтетический c набор данных с использованием datetime и timedelta, поэтому распределите некоторые значения на несколько дней:

import datetime

df = pd.DataFrame({'date':[datetime.datetime.now()+datetime.timedelta(x*.5) for x in range(10)], 'wind_speed':[x for x in range(10)]})

df выглядит так:

    date                        wind_speed
0   2020-07-08 15:42:11.399609  1
1   2020-07-09 15:42:11.399609  2
2   2020-07-10 15:42:11.399609  3
3   2020-07-11 15:42:11.399609  4
4   2020-07-12 15:42:11.399609  5
5   2020-07-13 15:42:11.399609  6
6   2020-07-14 15:42:11.399609  7
7   2020-07-15 15:42:11.399609  8
8   2020-07-16 15:42:11.399609  9
9   2020-07-17 15:42:11.399609  10

Группировать по год, месяц, день даты в столбце и применить список к wind_speed

df.groupby([df.date.dt.year, df.date.dt.month, df.date.dt.day])['wind_speed'].apply(list)

Вывод

date  date  date
2020  7     8          [1]
            9       [2, 3]
            10      [4, 5]
            11      [6, 7]
            12      [8, 9]
            13        [10]

Чтобы избавиться от мультииндекса

df.index.set_names(['year','month','day'], inplace=True)
df.reset_index()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...