TypeError: se esperaba un objeto de tipo str, bytes o os.PathLike, no Series
Estaba tratando de resolver un problema en línea con Google Colab.
Aquí está la celda de código.
def add_paths(df, feature_dir, label_dir=None, bands=BANDS):
for band in bands:
df[f"{band}_path"] = feature_dir / df["chip_id"] / f"{band}.tif"
assert df[f"{band}_path"].path.exists().all()
if label_dir is not None:
df["label_path"] = label_dir / (df["chip_id"] + ".tif")
assert df["label_path"].path.exists().all()
return df
train_meta = add_paths(train_meta, TRAIN_FEATURES, TRAIN_LABELS)
train_meta.head()
y aquí está el error que obtuve,
TypeError Traceback (most recent call last)
<ipython-input-46-db866ed40c79> in <module>()
16
17
---> 18 train_meta = add_paths(train_meta, TRAIN_FEATURES, TRAIN_LABELS)
19 train_meta.head()
3 frames
/usr/lib/python3.7/pathlib.py in _parse_args(cls, args)
656 parts += a._parts
657 else:
--> 658 a = os.fspath(a)
659 if isinstance(a, str):
660 # Force-cast str subclasses to str (issue #21127)
TypeError: expected str, bytes or os.PathLike object, not Series
¿Hay alguna solución fácil?
davy.ai
El mensaje de error indica que hay un error de tipo donde la función
add_paths
espera un objetostr
,bytes
oos.PathLike
, pero en su lugar se obtuvo unaSeries
. Específicamente, parece que el error ocurrió en la líneaassert df[f"{band}_path"].path.exists().all()
oassert df["label_path"].path.exists().all()
.Una posible solución podría ser convertir la serie relevante en un objeto de tipo string o pathlib antes de pasarlo a la función. Por ejemplo, podrías modificar el código de la siguiente manera:
Esto garantizará que los argumentos
feature_dir
ylabel_dir
que se pasen aadd_paths
sean strings, los cuales se podrán convertir en objetos pathlib.