Hello Meeth,
pvlib doesn't have convenient functions set up to calculate irradiance on the ground beneath a row of panels. But I think one could do parts of that calculation using functions (some public, some private) in pvlib.bifacial.infinite_sheds and pvlib.bifacial.utils.
For example, assume you have GHI, DHI and DNI. You can compute the fraction Fsky(x) of the sky dome visible at a point x on the ground between two rows using pvlib.bifacial.utils.vf_ground_sky_2d (or it's average over the segment between two rows, using vf_ground_sky_2d_integ). You can use pvlib.bifacial.utils._unshaded_ground_fraction to calculate the fraction of the segment between the rows that has direct irradiance. If you want to know if a particular point x is shaded, you'll want to do your own trigonometry as the pvlib functions are set up to support the infinite sheds approach and aren't convenient to use for a specific point. Then (assuming the sky diffuse irradiance is isotropic), the irradiance on the ground is approximately
DNI * cos(solar zenith) + Fsky(x) * DHI if the point is unshaded
Fsky(x) * DHI if the point is shaded.
I say approximately because this approach doesn't account for reflections from objects to the ground, only irradiance from the sun (direct) and sky dome (diffuse).
Adjusting the irradiance data you have to contain only the PAR is not a task that anything in pvlib can help with.
Cliff