Как использовать шаблон glob для чтения множества CSV в один фрейм данных Polars с помощью pydrive2 fsspec?

Если у меня есть 2 файла .csv, хранящиеся локально data/file_1.csv и data/file_2.csv, которые имеют одну и ту же схему, их обоих легко прочитать в одном объединенном фрейме данных, например:

pl.read_csv('data/file_*.csv')

Но если я храню эти же два файла на Google Диске (а не в корзине GCS) и использую GDriveFileSystem из pydrive2.fs в качестве файловой системы fsspec, я не могу найти способ использовать шаблон glob и вынужден читать их в отдельно, например

fs = GDriveFileSystem(ROOT_FOLDER_ID, client_id = CLIENT_ID, client_secret = CLIENT_SECRET)

dfs = []
for i in range(1, 3):
with fs.open(f'{ROOT_FOLDER_ID}/data/file_{i}.csv', 'rb') as f:
    dfs += pl.read_csv(f)
df = pl.concat(dfs)

Это не только означает, что мне нужно заранее знать и указывать количество файлов и их точные пути к ним, но и код кажется намного менее чистым, чем раньше.

Есть ли способ прочитать эти несколько файлов с помощью общего пути, но используя файловую систему fsspec?

Я не могу протестировать этот материал pydrive, но можете ли вы использовать функцию fsspec glob, чтобы получить список путей и передать их в scan_csv? pl.scan_csv(fs.glob(f'{ROOT_FOLDER_ID}/data/file_*.csv')).co‌​llect()

jqurious 15.07.2024 11:37
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
5
1
144
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Хотя pydrive2 имеет интерфейс fsspec, похоже, он не объявляет протокол и не регистрируется в fsspec, поэтому вызовы типа fsspec.open("gdrive://...", ) не распознаются автоматически. Это предполагаемое использование, поэтому я предлагаю обсудить с ними проблему, чтобы убедиться, что это реализовано. Вы можете вызвать fsspec.register_implementation вручную, чтобы назначить протокол классу fsspec PyDrive2.

Более старая, менее полная и неизданная версия gdrivefs поддерживает такое использование, поскольку она указана в fsspec.registry.known_implementations.

github.com/iterative/PyDrive2/issues/354
mdurant 15.07.2024 15:21

Другие вопросы по теме