You can remove the attribute group by the group id in Magento 2.
You can see a list of attribute groups from the Stores -> Attribute -> Attribute Set -> Click on Any attribute set.
Remove Attribute Group Record by the delete method with group id as an argument in the ProductAttributeGroupRepositoryInterface.
<?php
namespace Jesadiya\RemoveAttributeGroup\Model;
use Exception;
use Magento\Catalog\Api\ProductAttributeGroupRepositoryInterface;
class RemoveAttributeGroup
{
/**
* @var ProductAttributeGroupRepositoryInterface
*/
private $productAttributeGroup;
public function __construct(
ProductAttributeGroupRepositoryInterface $productAttributeGroup
) {
$this->productAttributeGroup = $productAttributeGroup;
}
/**
* Delete Product Attribute Group By Id
*
* @return bool
*/
public function removeAttributeGroup()
{
$isDeletedProductAttributeGroup = false;
$groupId = 1;
try {
$isDeletedProductAttributeGroup = $this->productAttributeGroup->delete($groupId);
} catch (Exception $exception) {
throw new Exception($exception->getMessage());
}
return $isDeletedProductAttributeGroup;
}
}
Now Call the method,
echo $isRemoveAttributeGroupSuccess = $this->removeAttributeGroup();
Output:
Boolean

1. Argument 1 passed to MagentoCatalogModelProductAttributeGroupRepository::delete() must be an instance of MagentoEavApiDataAttributeGroupInterface, integer given. You should actually use `deleteById`
2. Your method `JesadiyaRemoveAttributeGroupModelRemoveAttributeGroup::removeAttributeGroup` should be able to get argument `$groupId`
3. If you want to return boolean value – just catch all exceptions and don’t throw them! It’s debugging hell, but… if that’s your goal, it’s acceptable.
Method after changes should look like this:
public function removeAttributeGroup(int $groupId)
{
try {
$isDeletedProductAttributeGroup = $this->productAttributeGroup->deleteById($groupId);
} catch (Exception $exception) {
$isDeletedProductAttributeGroup = false;
}
return $isDeletedProductAttributeGroup;
}
However it’s really nasty to do it this way.