Вставить ряд значений в pd.dataframe случайным образом - PullRequest
1 голос
/ 09 апреля 2019

У меня большой фрейм данных, и я хочу перезаписать X записей этого фрейма новым заданным значением. Новые записи должны быть в случайной позиции, но они должны быть в порядке. Как у меня есть столбец со случайными числами, и я хочу перезаписать 20 из них подряд новым значением x.

Я попробовал df.sample (x), а затем обновил фрейм данных, но я получаю только отдельные записи. Но мне нужны x новых записей подряд.

У кого-нибудь есть решение? Я совершенно новичок в Python и должен начать изучать магистерскую диссертацию.

Попробую указать:

Мой информационный фрейм состоит из 5 столбцов с почти 60 000 строк, каждая строка по 10 минут в году. Один столбец - это «выход» со значениями выработки электроэнергии за эти 10 минут. В течение двух часов в году я хочу снизить это производство до 60%. Я хочу, чтобы это случилось в случайное время года. Другой столбец - «статус» с информацией о том, сокращается производство или нет.

Я пытался:

df_update = df.sample(12)
df_update.status = 'reduced'
df.update(df_update)
df.loc[('status) == 'reduced', ['production']] *=0.6 

, который делает трюк для общего количества времени (12 * 10 минут): Но я хочу, чтобы 120 минут были последовательными, а не разделенными.

Надеюсь, вы не понимаете.

1 Ответ

1 голос
/ 09 апреля 2019

Я решил получить случайное значение и просто проиндексировать следующие 12 записей, чтобы получить 0,6. Я думаю, что это то, что вы хотите.

df = pd.DataFrame({'output':np.random.randn(20),'status':[0]*20})
idx = df.sample(1).index.values[0]
df.loc[idx:idx+11,"output"]=0.6
df.loc[idx:idx+11,"status"]=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...