#python
Вопрос:
Это путь к папке, содержащей 6 csv-файлов
path = r'/Users/username/Documents/Lab/Datasets/FDA_Dataset'
Затем все шесть файлов объединяются в FDA_dataset((dataset_melanoma, datset_prostate, dataset_ovarian, dataset_lung, dataset_colorectal, and dataset_breast)
FDA_dataset = glob.glob(path "/*.csv")
Я определил функцию для создания dataframe
для каждого csv-файла (6 кадров данных) и возврата имен полей и соответствующего им набора данных.
Например, я хочу вернуться:
field_1, dataset_melanoma
field_2, dataset_melanoma
field_3, dataset_melanoma
...
field_1, dataset_breast
field_2, dataset_breast
field_3, dataset_breast
Это моя функция:
def parse_csv(filename):
df = pd.read_csv(filename, index_col=None, header=0)
for col in df.columns:
print(col, 'n,', filename)
for x in FDA_dataset:
print(parse_csv(x))
Это возвращает: поле, путь к файлу
Однако я хочу вернуть поле и имя файла (а не путь к файлу) как таковые:
field#, dataset_cancer.
Как я могу вызвать переменную 'filename'
в определяющей функции в качестве имени файла (без расширения), а не пути к файлу?
Комментарии:
1. Я не знаю, что ты хочешь сделать. Лучше покажите примерные данные и ожидаемый результат.
2.
filename
это строка, поэтому вы можете использовать строковые функции для ее редактирования, т. Е.split("/")
,split(".")
,replace(".csv". "")
,filename[:-4]
чтобы пропустить расширение. Вы также можете использовать модульos.path
типаos.path.basename(...)
илиos.path.split(...)
илиos.path.splitext(...)
Ответ №1:
Пути-это строка, поэтому вы можете использовать строковые функции для работы с этим: т. Е. path.split('.')
, path.split('/')
, path[:-4]
, path.replace('.csv', '')
path = r'/Users/username/Documents/Lab/Datasets/FDA_Dataset/dataset_cancer.csv'
print( path.split('.')[0].rsplit('/', 1)[1] )
Результат:
dataset_cancer
Вы также можете использовать модуль os.path
: т. е. os.path.basename(...)
или os.path.split(...)
или os.path.splitext(...)
import os.path
print( os.path.splitext(os.path.split(path)[-1])[0] )
print( os.path.splitext(os.path.basename(path))[0] )
Результат:
dataset_cancer
Вы также можете смешивать и то, и другое
print( os.path.basename(path)[:-4] )
print( os.path.basename(path).split('.')[0] )
print( os.path.basename(path).replace('.csv', '') )