У меня есть фрейм данных df с 60 датами, и для каждой даты есть 400 идентификаторов. Выглядит так:

 Date       ID
 2018-01-01   1000
 2018-01-01   1001
 ....
 2018-02-01   1000
 2018-02-01   1001    

Теперь я хотел бы создать третью колонку. Значение которого одинаково для всех идентификаторов на заданную дату. Я создал для этого отдельный фрейм данных с одним столбцом df_value, который имеет 60 случайных сгенерированных значений в порядке убывания:

     Value 
     350
     340
     337
     323
     ...

В итоге это должно выглядеть так:

 Date       ID        Value
 2018-01-01   1000     350
 2018-01-01   1001     350
 ....
 2018-02-01   1000     340
 2018-02-01   1001     340

Я попытался создать групповой фрейм данных с Date и ID в качестве индексов, чтобы позже добавить значения в столбец Placeholder. Но не мог понять, что дальше:

                     Placeholder
 Date       ID
 2018-01-01   1000       1
 2018-01-01   1001       1
 ....
 2018-02-01   1000       1
 2018-02-01   1001       1

Вероятно, идея группировки - это смерть. Помощь очень ценится.

1
Dillinger_92 1 Мар 2021 в 04:00

2 ответа

Лучший ответ

Используйте GroupBy.ngroup с помощью Series.map, только необходимый индекс по умолчанию в df_value:

df['new'] = df.groupby('date').ngroup().map(df_value['value'])
2
jezrael 1 Мар 2021 в 10:30

Я считаю, что у вас может сработать что-то вроде этого:

for i,date in enumerate(df.Date.drop_duplicates()): 
  df.loc[df[df.Date == date].index, 'value'] = value[i]
0
Roberto 1 Мар 2021 в 10:26