Создать данные столбца на основе ограничений - PullRequest
0 голосов
/ 30 октября 2019

У меня есть CSV с 2 столбцами date_1 и date_2.

Date_1  Date_2
01/09/2019  02/08/2019
01/09/2019  03/08/2019
02/09/2019  03/08/2019
01/09/2019  04/08/2019
02/09/2019  04/08/2019
03/09/2019  04/08/2019
02/09/2019  05/08/2019
03/09/2019  05/08/2019
04/09/2019  05/08/2019
01/09/2019  06/08/2019
02/09/2019  06/08/2019
03/09/2019  06/08/2019
04/09/2019  06/08/2019
05/09/2019  06/08/2019
02/09/2019  07/08/2019
03/09/2019  07/08/2019
04/09/2019  07/08/2019
05/09/2019  07/08/2019
06/09/2019  07/08/2019
02/09/2019  08/08/2019
03/09/2019  08/08/2019

Я хочу создать новый столбец value_1 такой, чтобы:

  1. для каждого date_1 value_1 (агрегировано) не должно превышать 5000.

  2. date_2 и value_1 должны иметь тенденцию к увеличению, т. Е. Агрегироваться по date_2, value_1 должен увеличиваться каждый день, например, если для date_2, агрегировано value_1 равно 1000, тогда для следующих date_2 значение должно быть больше 1000.

У фрейма данных есть уникальные (date_1,date_2) кортежи.

РЕДАКТИРОВАТЬ:

Data Link

https://drive.google.com/file/d/1xOlJfPNhGgclWyyQmdwzG-WRkU2fhEI4/view?usp=sharing

Может кто-нибудь помочь с тем же.

1 Ответ

0 голосов
/ 30 октября 2019

Я не думаю, что это то, чего вы действительно хотите, но я пишу это просто для того, чтобы вы поняли, что это полностью отвечает требованиям вашего вопроса, и если бы вы имели в виду что-то другое, вам пришлось бы добавить образцычто вы ожидаете:

df['value_1'] = np.arange(0, 5000 / max(df['date_1'].value_counts()), 5000 / len(df) / max(df['date_1'].value_counts()))

Это даст вам в столбце value_1 возрастающего тренда, и сумма value_1 для каждого date_1 гарантированно не пройдет 5000. Кстати: иметьТенденция к увеличению предполагает, что ваши даты отсортированы, как в приведенных вами образцах данных. Если нет (или нет), выполните:

df = df.sort_values(['date_1', 'date_2']) # or ['date_2', 'date_1'] if you prefer

до создания value_1 column

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...