2016-09-28 10 views
2

У меня есть следующие данные:расширяющиеся ряды в панд dataframe

product Sales_band Hour_id sales 
prod_1 HIGH   1 200 
prod_1 HIGH   3 100 
prod_1 HIGH   4 300 
prod_1 VERY HIGH  2 100 
prod_1 VERY HIGH  5 253 
prod_1 VERY HIGH  6 234 

хотите добавить строки на основе значения по hour_id. переменная hour_id может принимать значения от от 1 до 10. Таким образом, те же данные выше будут расширены, если отсутствуют идентификаторы часов. Фиктивная выход :(продаж = 0, когда отсутствует час идентификатор)

product Sales_band Hour_id sales 
prod_1 HIGH   1 200 
prod_1 HIGH   2 0 
prod_1 HIGH   3 100 
prod_1 HIGH   4 300 
prod_1 HIGH   5 0 
prod_1 HIGH   6 0 
prod_1 HIGH   7 0 
prod_1 HIGH   8 0 
prod_1 HIGH   9 0 
prod_1 HIGH   10 0 
prod_1 VERY HIGH  1 0 
prod_1 VERY HIGH  2 100 
prod_1 VERY HIGH  3 0 
prod_1 VERY HIGH  4 0 
prod_1 VERY HIGH  5 253 
prod_1 VERY HIGH  6 234 
prod_1 VERY HIGH  7 0 
prod_1 VERY HIGH  8 0 
prod_1 VERY HIGH  9 0 
prod_1 VERY HIGH  10 0 

, как я могу добиться этого с помощью питона dataframe.

+0

Если вы в конечном итоге с 10 строк на продукт и продаж группы? –

+0

Да, это должно быть идеальным окончательным выходом – Mukul

ответ

2

Использование groupby с reindex:

print (df.groupby(['product','Sales_band'])['Hour_id','sales'] 
     .apply(lambda x: x.set_index('Hour_id').reindex(range(1, 11), fill_value=0)) 
     .reset_index()) 

    product Sales_band Hour_id sales 
0 prod_1  HIGH  1 200 
1 prod_1  HIGH  2  0 
2 prod_1  HIGH  3 100 
3 prod_1  HIGH  4 300 
4 prod_1  HIGH  5  0 
5 prod_1  HIGH  6  0 
6 prod_1  HIGH  7  0 
7 prod_1  HIGH  8  0 
8 prod_1  HIGH  9  0 
9 prod_1  HIGH  10  0 
10 prod_1 VERY HIGH  1  0 
11 prod_1 VERY HIGH  2 100 
12 prod_1 VERY HIGH  3  0 
13 prod_1 VERY HIGH  4  0 
14 prod_1 VERY HIGH  5 253 
15 prod_1 VERY HIGH  6 234 
16 prod_1 VERY HIGH  7  0 
17 prod_1 VERY HIGH  8  0 
18 prod_1 VERY HIGH  9  0 
19 prod_1 VERY HIGH  10  0 
+0

спасибо большое. Это сработало. будет больше читать о set_index и reindex. – Mukul

+0

Благодарим вас за прием! Приятный день! – jezrael

 Смежные вопросы

  • Нет связанных вопросов^_^