Как удалить случайные строки из кадра данных панд на основе записи в столбце?

На основе регулярного выражения @Justin Poliey:

// Trim very long text to 120 characters. Add an ellipsis if the text is trimmed.
if(strlen($very_long_text) > 120) {
  $matches = array();
  preg_match("/^(.{1,120})[\s]/i", $very_long_text, $matches);
  $trimmed_text = $matches[0]. '...';
}
0
задан V P 2 March 2019 в 03:46
поделиться

3 ответа

Используйте sample с drop:

n = 1068
# Do this first if you haven't already.
# df.compliance = df.compliance.map(pd.eval)
df_dropped = df.drop(df[df.compliance].sample(n=n).index)

Чтобы это работало, n должно быть строго меньше, чем отфильтрованный DataFrame.


Пример случайного удаления двух строк.

df.drop(df[df.compliance].sample(n=2).index)

   compliance  day0  day1  day2  day3  day4
1       False     7     4     8     3     2
3        True     5     3     9     6     2
0
ответ дан cs95 2 March 2019 в 03:46
поделиться

Это сработало для меня: вы генерируете список индексов, из которых вы хотите удалить элемент (в вашем случае Compliance==True). Затем вы выбираете случайным образом (без замены) из этого списка столько элементов, сколько вы хотели бы удалить. Затем вы удаляете их из DataFrame

to_remove = np.random.choice(data[data['Compliance']==True].index,size=1068,replace=False)
data.drop(to_remove)
0
ответ дан Tacratis 2 March 2019 в 03:46
поделиться

Вы можете попробовать:

df_dropped = df.drop(df.loc[df.compliance, :]).sample(n=fraction).index)

0
ответ дан hacker315 2 March 2019 в 03:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: