Как экспортировать фрейм данных в csv в ведре в облаке Google

Я пытаюсь экспортировать фреймворк данных pandas в CSV-файл в ведре в моем облачном хранилище Google, но следующий код, очевидно, у меня не работает:

my_df.to_csv(StringIO(file_io.FileIO('gs://mybucket/data/file.csv', mode='w+')))

Как это следует переписать? Я получаю следующую ошибку:

unbound method write() must be called within FileIO instance as first argument (got nothing instead)

Извините, если ответ очевиден, но я только начинаю изучать python.

Возможный дубликат Сохранить фрейм данных pandas как csv в ведро хранилища gcloud

philshem 26.03.2019 22:27

Ваш CSV имеет размер удерживаемой памяти? Если да, вы можете, по-видимому, написать новый объект в GCS из строки из python. Если ваши данные слишком велики, вы можете записать их в локальный файл, а затем загрузить файл из API. Не путайте GCS с файловой системой.

Kolban 26.03.2019 23:32

Я специально пытался определить, как использовать StringIO и FileIO для экспорта файла в корзину хранилища gcloud. Ни одно из других предложенных здесь решений, которые я просматривал, не предлагало решения. Мне удалось использовать их для импорта csv из gcloud в фрейм данных, поэтому я предположил, что будет несложно сделать то же самое в другом направлении. Мне удалось заставить gcs работать, поэтому я опубликую ниже, как я это сделал, для всех, кому может быть интересно.

quantllama 28.03.2019 20:40
Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
3
2 472
2

Ответы 2

Импорт файла из gcloud в dataframe работает, когда я кодирую так:

from tensorflow.python.lib.io import file_io
from pandas.compat import StringIO
import pandas as pd

def read_data(gcs_path):
   file_stream = file_io.FileIO(gcs_path, mode='r')
   data = pd.read_csv(StringIO(file_stream.read()), names=['various', 'column', 'names'])
   return data

my_df = read_data('gs://mybucket/data/file.csv')

Но я не смог повернуть процесс вспять.

Однако GCS сработал для меня:

import google.cloud.storage as gcs

client = gcs.Client()
bucket = client.bucket('my-bucket')
blobs = list(bucket.list_blobs(prefix='data/'))

my_df.to_csv('tmp.csv')
local_tmp_path = ('tmp.csv')
target_blob = bucket.blob('data/file.csv')
target_blob.upload_from_file(open(local_tmp_path, 'r'))

Для чего вы используете blobs?

Lucas 27.11.2020 17:12

Вы можете сохранить файл csv на своей виртуальной машине, а затем использовать gsutil, чтобы сохранить его в своей корзине.

Питон:

my_df.to_csv("data.csv")

Оболочка:

gsutil data.csv gs://my_bucket/

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