Поскольку GeoPandas не позволит вам сохранить два геометрических столбца (при создании шейп-файлов), я бы рекомендовал сохранять координаты xy в столбцах для каждого центроида. От этого вы всегда можете легко получить стройную форму. Point.
for index, row in M.iterrows():
centroid_coords = row.geometry.centroid.coords.xy
M.loc[index, 'cen_x'] = centroid_coords[0][0]
M.loc[index, 'cen_y'] = centroid_coords[1][0]
M[["cen_x", "cen_y", "geometry"]].to_file("mfile.shp")
РЕДАКТИРОВАТЬ на основе комментария ниже (спасибо, не понял этого):
temp = M.centroid
M['cen_x'] = temp.x
M['cen_y'] = temp.y
M[["cen_x", "cen_y", "geometry"]].to_file("mfile.shp")