in src/alpaca_eval/utils.py [0:0]
def load_or_convert_to_dataframe(df=Union[AnyPath, AnyData, Callable, list, tuple], **kwargs):
"""Load a dataframe from a path or convert the input to a dataframe if it's not a path."""
if isinstance(df, Callable):
df = df(**kwargs)
if isinstance(df, (tuple, list)) and isinstance(df[0], (str, os.PathLike, pathlib.Path)):
df = pd.concat(
[load_or_convert_to_dataframe(f, **kwargs) for f in df],
)
if isinstance(df, (str, os.PathLike, pathlib.Path)):
df = Path(df)
# check if it's a globbing pattern
if "*" in str(df):
df = pd.concat(
[load_or_convert_to_dataframe(f, **kwargs) for f in glob.glob(str(df))],
)
else:
suffix = df.suffix
if suffix == ".json":
df = pd.read_json(df, **kwargs)
elif suffix == ".csv":
df = pd.read_csv(df, **kwargs)
if df.columns[0] == "Unnamed: 0":
df.set_index(df.columns[0], inplace=True)
df.index.name = None
elif suffix == ".tsv":
df = pd.read_table(df, sep="\t", **kwargs)
else:
raise ValueError(f"File format {suffix} not supported.")
else:
df = convert_to_dataframe(df, **kwargs)
return df