将 Pandas 数据框写入 S3 时出现 AttributeError: 'DataFrame' object has no attribute '_mgr'。

3

在将 Pandas 数据帧写入 S3 时出现了 AttributeError: 'DataFrame' object has no attribute '_mgr'

import awswrangler as wr
window = '0112'
wr.s3.to_csv(
    df=mergeDf,
    path="s3://MYBUCKET/wrangled/" + "WiderData_2" +window+ ".csv"
)

错误:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-65-30cb4c51bd25> in <module>
      7 # Use 'w' for py3, 'wb' for py2
      8 with s3.open('........','w') as f:
----> 9     mergeDf.to_csv(f)
.....
~/anaconda3/envs/python3/lib/python3.6/site-packages/pandas/core/generic.py in __getattr__(self, name)
   5272         """
   5273         Return a Numpy representation of the DataFrame.
-> 5274 
   5275         .. warning::
   5276 

AttributeError: 'DataFrame' object has no attribute '_mgr'

也试过

import s3fs
s3 = s3fs.S3FileSystem(anon=False)
# Use 'w' for py3, 'wb' for py2
with s3.open('MYBUCEKT/wrangled/WiderData_1011.csv','w') as f:
    mergeDf.to_csv(f)

同样的错误 'DataFrame' 对象没有 '_mgr' 属性的 AttributeError


这个错误通常是由于Pandas版本不兼容引起的。尝试更新Pandas版本或者检查代码中是否使用了已经被弃用的函数。
1个回答

0
只需这样使用boto3即可。
    import boto3
    import io
    import pandas as pd
    bucket='yourbucket'
    key='path/to/file.csv'
    csv_buffer = io.StringIO()
    df.to_csv(csv_buffer)
    response = boto3.client('s3').put_object(Body=csv_buffer.getvalue(), Bucket=bucket, Key=key)

还是同样的错误。数据 = {'A':[1, 2, 3],
'B':[4, 5, 6],
'C':[7, 8, 9] } df = pd.DataFrame(data) dfimport boto3 import io import pandas as pd bucket='vz-bhr-ml-sha-inputdata' key='wrangled/test.csv' csv_buffer = io.StringIO() df.to_csv(csv_buffer) response = boto3.client('s3').put_object(Body=csv_buffer.getvalue(), Bucket=bucket, Key=key) df.to_csv(csv_buffer) -> 5274 5275 .. 警告:: 5276 AttributeError: 'DataFrame' 对象没有属性 '_mgr'
- undefined
发布你的 df。似乎是 df 的问题,而不是 s3 的问题或者 pandas 的问题。你在 Stack Overflow 上搜索过这个错误吗? - undefined
错误是一样的。我观察到另一件事情,我打开了一个新的NoteBook实例,并尝试了一下,它起作用了。但是一旦我执行[ !pip install awswrangler ],即使是@Jonathan Leon的建议也失败了。但是旧代码在几个月前是可以工作的。看起来awswrangler包有一些更新,没有基本的质量保证和质量控制,这搞乱了事情。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接