【问题标题】:dynamodb pipe object to pandas dataframedynamodb 管道对象到熊猫数据框
【发布时间】:2018-01-15 00:29:20
【问题描述】:

我真的很难弄清楚如何将我的数据库值从 AWS Dynamodb 移动到 pandas 数据框。我的数据不是很大(100,000 行)。为了简单起见,我将数据放入 s3 然后下载。我尝试使用 boto3 和 S3Fs 将数据放入 pandas 框架但没有成功,所以现在我已经放弃了在创建到 S3 的管道后直接下载文件。输出采用以下格式,pd.read_JSON、pd.read_csv 和 pd.read_table 似乎无法理解。

 {"id":{"s":"3115136104"},"created":{"s":"Wed Mar 25 15:15:35 +0000 2015"},"location":{"s":"Dover, Kent"},"description":{"s":"#TrafficandWeather information from the #PortofDover - follow for regular round the clock updates. NOTE: we are not always able to respond to queries"},"friends_count":{"n":"66"},"name":{"s":"Port of Dover Travel"},"URL":{"s":"doverport.co.uk/weather/"},"statuses_count":{"n":"11062"},"lang":{"s":"en"},"followers_count":{"n":"11517"}}

这显然是 JSON 格式,但因为它已将每个行项分解为没有键的字典。我对如何让熊猫阅读这篇文章感到完全困惑。

因此,我的问题是,假设有一些空值,将整个 dynamodb 表放入 Pandas 的最简单方法是什么?请注意,我尝试了许多不同的方式,但没有在任何方向上取得稳固的前进,这就是为什么我没有包含任何通用代码的原因。

【问题讨论】:

    标签: python json csv amazon-web-services amazon-s3


    【解决方案1】:

    我自己已经回答了这个问题。

    columns = ['id', 'created', 'description', 'followers_count', 'friends_count', 'lang', 'location', 'name', 'statuses_count', 'URL']
    df = pd.DataFrame()
    with open(r'C:\dynamodb-in-s3-file-that-was-downloaded') as s3:
        for item in s3:
            newdf = pd.read_json(item)
            newdf.fillna(method='ffill', inplace=True)
            newdf = newdf.loc['s']
            df = df.append(newdf, ignore_index=True)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-27
      • 2023-02-15
      • 2020-06-03
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 2020-11-23
      • 2020-03-12
      相关资源
      最近更新 更多