Панды присваивают значение новой строке на основе индекса входящих живых данных - PullRequest
0 голосов
/ 20 ноября 2018

У меня проблемы с написанием эффективного кода (без большого количества циклов), который присваивает значение ячейке в кадре данных pandas, который обновляется каждую минуту или около того (живой поток).В обучающем наборе я обучил свою модель переменным меток времени с горячим кодированием, и это работало лучше, чем переменные продолжения, так что это то, что я хочу использовать для производства.Фрейм данных выглядит следующим образом:

datetime              DOW_1     DOW_2    ... DOW_7    Month1   Month2   Month3 
`2018-07-01 09:30:00`  0          1            0         0       0        1

Как видите, столбцы кодируются 0 и 1 для обозначения месяца, дня недели (и у меня больше столбцов для дня года, is_holiday и т. Д.)....) Я легко сделал это с данными обучения, проверки и тестирования, используя pd.get_dummies, но теперь, когда поступает живой поток данных, я не могу найти простой способ «назначить» month2 = 0 на основе df.index.month

Я пытался сделать что-то вроде цикла этого типа, но это довольно утомительно и медленно ..

i=0
while i < len(df):
    for m in range(1,13):
        if df.index.iloc[i].month == m:
            df['Month'+str(m)][i] = 1
            i+=1
        else:
            i+=1

Какие-нибудь лучшие предложения?

1 Ответ

0 голосов
/ 20 ноября 2018

Я все еще думаю о решении, которое удаляет даже for, но вы можете, по крайней мере, избежать внешнего, в то время как более len(df), используя .loc :

for m in range(1, 13):
    df.loc[df.index.month == m, 'Month'+str(m)] = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...