我正在尝试将pickle文件形式的panda Dataframe 写入AWS中的s3 bucket。我知道我可以将 Dataframe new_df
以csv形式写入s3 bucket,如下所示:
bucket='mybucket'
key='path'
csv_buffer = StringIO()
s3_resource = boto3.resource('s3')
new_df.to_csv(csv_buffer, index=False)
s3_resource.Object(bucket,path).put(Body=csv_buffer.getvalue())
我已经尝试过在to_pickle()
中使用上面的相同代码,但是没有成功。
7条答案
按热度按时间68bkxrlz1#
根据你的回答,你不需要转换成csv。pickle.dumps方法返回一个byte obj。https://docs.python.org/3/library/pickle.html
3lxsmp7m2#
我已经找到了解决方案,需要调用BytesIO到pickle文件的缓冲区,而不是StringIO(用于CSV文件)。
4xy9mtcn3#
这对我的Pandas0.23.4和boto3 1.7.80有效:
vyswwuz24#
这个解决方案(使用s3fs)对我的团队来说非常完美:
2izufjch5#
这对以前的回答作了一些澄清:
dpiehjr46#
从Tarek Atwan刚刚出版的书《用Python进行时间序列分析》中,我学到了这个方法:
我觉得更像Python。
sirbozc57#
我已经找到了最好的解决方案-只需要升级Pandas和安装s3 fs: