这可能是一个不常见的问题,因为我相信以前从未有人问过这个问题,但是有可能将Pandas数据框架直接作为CSV文件导出到Azure数据湖存储吗?
为了添加一些上下文,我有一个pandas数据框架,它被导出为CSV文件到本地目录,使用datalakeserviceclient
,然后我从文件路径获取CSV文件并将文件写入数据湖存储。
docs[:0].to_csv("test.csv", index = False)
docs.to_csv("test.csv", index = False, header = False ,mode = 'a', quoting = csv.QUOTE_NONNUMERIC)
try:
global service_client
service_client = DataLakeServiceClient(account_url="{}://{}.dfs.core.windows.net".format(
"https", "XXXX"), credential='XXX')
file_system_client = service_client.get_file_system_client(file_system="root")
directory_client = file_system_client.get_directory_client("test_db")
file_client = directory_client.create_file("test.csv")
local_file = open(r"C:XXXXtest.csv",'rb')
file_contents = local_file.read()
file_client.upload_data(file_contents, overwrite=True)
except Exception as e:
print(e)
但是,我不想将数据帧导出到本地目录,而是想找到一种方法将其直接导出到数据湖存储。这真的可能吗?
感谢您的帮助
pandas.to_csv
(doc)可以将数据帧保存到缓冲区中。
尝试以下代码:
from io import StringIO
text_stream = StringIO()
docs.to_csv(text_stream)
# the rest of your code
file_client.upload_data(text_stream, overwrite=True)