如何将numpy数组作为csv写入S3



我有一个numpy数组,有两列,看起来像下面

[[1.8238497e+03 5.2642276e-06]
[2.7092224e+03 6.7980350e-06]
[2.3406370e+03 6.6842499e-06]
...
[1.7234612e+03 6.6842499e-06]
[2.1071147e+03 2.1332115e-05]
[2.6937273e+03 6.2854801e-06]]

我想使用s3fs直接将其写为具有S3列名的csv(不创建本地csv文件)。我知道怎么做,如果我有一个数据框架,我可以把我的numpy转换成数据框架。但是我想要一种不需要将numpy数组转换为数据帧的方法。

下面是我的代码

output = [[1.8238497e+03 5.2642276e-06]
[2.7092224e+03 6.7980350e-06]
[2.3406370e+03 6.6842499e-06]
...
[1.7234612e+03 6.6842499e-06]
[2.1071147e+03 2.1332115e-05]
[2.6937273e+03 6.2854801e-06]]
## write the outpout in csv at s3
s3 = s3fs.S3FileSystem(anon=False)
dftowrite = pd.DataFrame({'col1': output[:, 0], 'col2': output[:, 1]})
with s3.open(f"{'s3://bucket'}/result.csv",'w') as f:
dftowrite.to_csv(f)

我想在不将NumPy数组output转换为数据帧dftowrite的情况下做到这一点。任何建议吗?

试试这个

output = [[1.8238497e+03 5.2642276e-06]
[2.7092224e+03 6.7980350e-06]
[2.3406370e+03 6.6842499e-06]
...
[1.7234612e+03 6.6842499e-06]
[2.1071147e+03 2.1332115e-05]
[2.6937273e+03 6.2854801e-06]]
## write the outpout in csv at s3
s3 = s3fs.S3FileSystem(anon=False)
with s3.open(f"{'s3://bucket'}/result.csv",'w') as f:
numpy.savetxt(f, output, delimiter=",")

最新更新