На основе регулярного выражения @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]. '...';
}
Используйте 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
Это сработало для меня: вы генерируете список индексов, из которых вы хотите удалить элемент (в вашем случае Compliance==True
). Затем вы выбираете случайным образом (без замены) из этого списка столько элементов, сколько вы хотели бы удалить. Затем вы удаляете их из DataFrame
to_remove = np.random.choice(data[data['Compliance']==True].index,size=1068,replace=False)
data.drop(to_remove)
Вы можете попробовать:
df_dropped = df.drop(df.loc[df.compliance, :]).sample(n=fraction).index)