English 'niece' descends from Old French 'niece,' from Vulgar Latin *neptia and Classical Latin 'neptis' meaning 'granddaughter or niece,' from PIE *neptíh₂ — the feminine form of the same root that gave 'nephew,' making it one of the few PIE feminine kinship terms to survive intact into modern English.
From Old French "niece" (niece, granddaughter), from Late Latin "neptia," alteration of Latin "neptis" (granddaughter, and later niece), from PIE *neptih₂ (granddaughter, niece). The PIE root is remarkably stable across branches: Sanskrit "naptī" (granddaughter), Old Irish "necht" (niece), Old English "nift" (niece, granddaughter), Old High German "nift" (niece), Old Lithuanian "neptė" (granddaughter). The masculine counterpart is PIE *nepōt- (grandson, nephew), which produced Latin "nepōs" (grandson, nephew → "nephew," and also "nepotism" — the favouring of one's nephews, originally papal nephews given cardinalships), Sanskrit "nápāt" (grandson), and Germanic *nefōt (→ Old English "nefa," nephew). The native Old English "nift" was displaced by the French