【问题标题】:From AttributeDict to Pandas Dataframe?从 AttributeDict 到 Pandas 数据框?
【发布时间】:2022-01-20 15:47:58
【问题描述】:

我正在使用 Wikipedia 的 Pageviews API 来查看多个 Wikipedia 页面的综合浏览量。为此,我创建了一个字典,其中将文章名称存储为键,将搜索结果存储为值(结果为 AttributeDict):

list = ['Paris', 'Rome']
for x in list:
    dct0[x] = pageviewapi.per_article('it.wikipedia', x, '20150101', '20210101',
                        access='all-access', agent='all-agents', granularity='monthly')

所以结果是

{'Paris': AttrDict({'items': [{'project': 'it.wikipedia', 'article': 'Paris', 'granularity': 'monthly', 'timestamp': '2015070100', 'access': 'all-access', 'agent': 'all-agents', 'views': 890},  (etc.)

我想为每个字典创建一个数据框,这样我就可以: 巴黎数据框

timestamp, views
201507100, 890
201507101, 900

罗马数据框也是如此。但似乎我无法访问从 API 给出的 AttributeDict 。我能做什么?

【问题讨论】:

    标签: python python-3.x pandas wikipedia wikipedia-api


    【解决方案1】:

    AttrDictdict,因此可以在任何使用 dict 的地方使用,请参阅 https://github.com/bcj/AttrDict

    我相信,特别是在你的情况下,这会产生你想要的东西

    df1 = pd.DataFrame(dct0['Paris']['items'])[['timestamp','views']]
    

    看起来像这样

        timestamp   views
    0   2015070100  890
    1   2015080100  879
    2   2015090100  971
    3   2015100100  1097
    4   2015110100  2259
    ... ... ...
    61  2020080100  729
    62  2020090100  665
    63  2020100100  734
    64  2020110100  1020
    65  2020120100  918
    66 rows × 2 columns
    

    编辑

    为了让它们循环起来,让我们把它们放在一个按城市名称索引的字典中

    city_list = ['Paris', 'Rome']
    city_dfs = {}
    for x in city_list :
        city_dict = pageviewapi.per_article('it.wikipedia', x, '20150101', '20210101',
                            access='all-access', agent='all-agents', granularity='monthly')
        city_df = pd.DataFrame(city_dict['items'])[['timestamp','views']]
        city_dfs [x] = city_df
    

    那么你就可以这样访问了:

    print(city_dfs['Paris'])
    

    【讨论】:

    • 谢谢,我想知道如何动态进行。就像在 for 循环中一样,如何区分每个城市的每个数据框的名称?我不想手动做,因为列表实际上很长
    • 您希望 oiutput 是什么?数据框列表?数据框字典?
    • 每个数据框都是一个城市......然后是访问它们的最佳方式
    • 请看我的编辑
    猜你喜欢
    • 2019-11-05
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 2020-10-10
    • 1970-01-01
    • 2021-11-22
    • 2023-03-04
    相关资源
    最近更新 更多