**The keyframes are not enumerated to frame.**

[Commented on another question of yours](https://blender.stackexchange.com/questions/227385/re-align-imported-animation-keyframes-to-blender-frames#comment383606_227385) that there is no necessity that the keyframes are in frame order.  _Feel some of this answer could be there or vice versa_ 

For the 2D keyframe point coordinate vector `x` is the frame, and y is the value `y` .  Both are floats. The frame does not necessarily have to be exactly on a keyframe.  For example may be from an imported `bvh` animation with a differing frame rate.

To crop based on the frame of the keyframe point

    import bpy

    def crop_animation(action, frame_start, frame_end):
        """ Crop the given action keyframes by removing all keyframes before 
        frame_start and after frame_end
        """
        fcurves = action.fcurves
        for fcu in fcurves:
            for kf in fcu.keyframe_points:
                if kf.co.x < frame_start or kf.co.x > frame_end:
                    fcu.keyframe_points.remove(kf)

    # test call                
    crop_animation(bpy.data.actions[0], 10000, 0)


_Not sure how you get the keyframe not in fcurve error using code in question._  .

**Copy it.**

Have added a related link below re copying and cropping fcurves. To make your fcurve such that the kf's fall on integer frames would make a copy, then over it's integer range.  For example if `fc` is our original, then the points of our new curve could be

    [(frame, fc.evaluate(frame) for frame in range(frame_start, frame_end)] 

For bvh animation as displayed in other question with constant spacing between keyframes Another option is to scale the animation such that between frame distance is 1. 

Related.

https://blender.stackexchange.com/questions/86822/how-to-change-an-fcurve-value-in-python/86825#86825

https://blender.stackexchange.com/questions/214866/copying-specific-frames-from-one-action-to-another-python

https://blender.stackexchange.com/questions/190340/python-how-to-find-a-point-on-the-timeline-where-fcurve-reaches-a-certain-value/190350#190350