1

我有一个带有 2 列的 numpy ndarray,如下所示

[[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]]

我想csv使用 s3fs 直接将它写为 S3 中的列名(不创建本地 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 数组转换为 dataframe 的情况下做到这output一点dftowrite。有什么建议吗?

4

1 回答 1

1

尝试这个

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=",")
于 2021-07-31T23:35:23.850 回答