<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def make_df_from_batch(batch_name, batch_col="b01", reader=None, reader_label=None):
 """Create a pandas DataFrame with the info needed for ``cellpy`` to load the runs. Args: batch_name (str):
 Name of the batch. batch_col (str):
 The column where the batch name is in the db. reader (method):
 the db-loader method. reader_label (str):
 the label for the db-loader (if db-loader method is not given) Returns: info_df (pandas DataFrame) """


    batch_name = batch_name
    batch_col = batch_col
    logger.debug(f"batch_name, batch_col: {batch_name}, {batch_col}")
    if reader is None:
        reader_obj = get_db_reader(reader_label)
        reader = reader_obj()

    srnos = reader.select_batch(batch_name, batch_col)
    logger.debug("srnos:" + str(srnos))
    info_dict = _create_info_dict(reader, srnos)
    info_df = pd.DataFrame(info_dict)
    info_df = info_df.sort_values(["groups", "filenames"])
    info_df = _make_unique_groups(info_df)
    info_df["labels"] = info_df["filenames"].apply(create_labels)
    info_df.set_index("filenames", inplace=True)

    return info_df