def measure_observables_df(
    circuit: cirq.AbstractCircuit,
    observables: Iterable[cirq.PauliString],
    sampler: cirq.Simulator | cirq.Sampler,
    stopping_criteria: StoppingCriteria,
    *,
    readout_symmetrization: bool = False,
    circuit_sweep: cirq.Sweepable | None = None,
    grouper: str | GROUPER_T = group_settings_greedy,
    readout_calibrations: BitstringAccumulator | None = None,
    checkpoint: CheckpointFileOptions = CheckpointFileOptions(),
):
    """Measure observables and return resulting data as a Pandas dataframe.

    Please see `measure_observables` for argument documentation.
    """
    results = measure_observables(
        circuit=circuit,
        observables=observables,
        sampler=sampler,
        stopping_criteria=stopping_criteria,
        readout_symmetrization=readout_symmetrization,
        circuit_sweep=circuit_sweep,
        grouper=grouper,
        readout_calibrations=readout_calibrations,
        checkpoint=checkpoint,
    )
    df = pd.DataFrame(res.as_dict() for res in results)
    return df
Measure observables and return resulting data as a Pandas dataframe.

    Please see `measure_observables` for argument documentation.
    
cirq-core/cirq/work/observable_measurement.py