Я просто пытаюсь прочитать файл csv, который был загружен в GCS.
Я хочу прочитать файл csv, который загружается в GCS с помощью облачных функций в GCP. И я хочу обрабатывать данные csv как «DataFrame».
Но я не могу прочитать файл csv, используя pandas.
Это код для чтения файла csv на GCS с использованием облачных функций.
def read_csvfile(data, context):
try:
bucket_name = "my_bucket_name"
file_name = "my_csvfile_name.csv"
project_name = "my_project_name"
# create gcs client
client = gcs.Client(project_name)
bucket = client.get_bucket(bucket_name)
# create blob
blob = gcs.Blob(file_name, bucket)
content = blob.download_as_string()
train = pd.read_csv(BytesIO(content))
print(train.head())
except Exception as e:
print("error:{}".format(e))
Когда я запустил свой код Python, я получил следующую ошибку.
No columns to parse from file
Некоторые веб-сайты говорят, что ошибка означает, что я прочитал пустой файл CSV. Но на самом деле я загружаю непустой csv файл. Итак, как я могу решить эту проблему?
пожалуйста, помогите мне. Спасибо.
---- добавить в 2020/08/08 -------
Спасибо за вашу помощь! Но, наконец, я не могу читать csv-файл с помощью вашего кода ... У меня все еще есть ошибка: No columns to parse from file
.
Итак, я попробовал новый способ чтения csv-файла как байтового типа. Ниже приведен новый код Python для чтения файла csv.
MAIN.PY
from google.cloud import storage
import pandas as pd
import io
import csv
from io import BytesIO
def check_columns(data, context):
try:
object_name = data['name']
bucket_name = data['bucket']
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(object_name)
data = blob.download_as_string()
#read the upload csv file as Byte type.
f = io.StringIO(str(data))
df = pd.read_csv(f, encoding = "shift-jis")
print("df:{}".format(df))
print("df.columns:{}".format(df.columns))
print("The number of columns:{}".format(len(df.columns)))
REQUIREMENTS.TXT
Click==7.0
Flask==1.0.2
itsdangerous==1.1.0
Jinja2==2.10
MarkupSafe==1.1.0
Pillow==5.4.1
qrcode==6.1
six==1.12.0
Werkzeug==0.14.1
google-cloud-storage==1.30.0
gcsfs==0.6.2
pandas==1.1.0
Результат, который я получил, приведен ниже.
df:Empty DataFrame
Columns: [b'Apple, Lemon, Orange, Grape]
Index: []
df.columns:Index(['b'Apple', 'Lemon', 'Orange', 'Grape'])
The number of columns:4
Итак, я мог прочитать только первую запись в файле csv как df.column !? Но я не смог получить другие записи в файле csv ... И первый столбец - это не столбец, а обычная запись.
Итак, как я могу получить некоторые записи в файле csv как DataFrame с использованием pandas?
Не могли бы вы мне еще раз помочь? Спасибо.