将Counter对象转换为Pandas DataFrame

发布于 2021-01-29 17:54:41

我用Counter一个列表来计算此变量:

final = Counter(event_container)

最终印刷品给出:

Counter({'fb_view_listing': 76, 'fb_homescreen': 63, 'rt_view_listing': 50, 'rt_home_start_app': 46, 'fb_view_wishlist': 39, 'fb_view_product': 37, 'fb_search': 29, 'rt_view_product': 23, 'fb_view_cart': 22, 'rt_search': 12, 'rt_view_cart': 12, 'add_to_cart': 2, 'create_campaign': 1, 'fb_connect': 1, 'sale': 1, 'guest_sale': 1, 'remove_from_cart': 1, 'rt_transaction_confirmation': 1, 'login': 1})

现在,我想转换final为Pandas DataFrame,但是在执行操作时:

final_df = pd.DataFrame(final)

但我有一个错误。

我猜final不是正确的字典,那么如何转换final成字典?还是转换final为的另一种方式DataFrame

关注者
0
被浏览
153
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以使用from_dict并传递param进行构造orient='index',然后调用reset_index以获取2列df:

    In [40]:
    from collections import Counter
    d = Counter({'fb_view_listing': 76, 'fb_homescreen': 63, 'rt_view_listing': 50, 'rt_home_start_app': 46, 'fb_view_wishlist': 39, 'fb_view_product': 37, 'fb_search': 29, 'rt_view_product': 23, 'fb_view_cart': 22, 'rt_search': 12, 'rt_view_cart': 12, 'add_to_cart': 2, 'create_campaign': 1, 'fb_connect': 1, 'sale': 1, 'guest_sale': 1, 'remove_from_cart': 1, 'rt_transaction_confirmation': 1, 'login': 1})
    df = pd.DataFrame.from_dict(d, orient='index').reset_index()
    df
    
    Out[40]:
                              index   0
    0                         login   1
    1   rt_transaction_confirmation   1
    2                  fb_view_cart  22
    3                    fb_connect   1
    4               rt_view_product  23
    5                     fb_search  29
    6                          sale   1
    7               fb_view_listing  76
    8                   add_to_cart   2
    9                  rt_view_cart  12
    10                fb_homescreen  63
    11              fb_view_product  37
    12            rt_home_start_app  46
    13             fb_view_wishlist  39
    14              create_campaign   1
    15                    rt_search  12
    16                   guest_sale   1
    17             remove_from_cart   1
    18              rt_view_listing  50
    

    您可以将列重命名为更有意义的名称:

    In [43]:
    df = df.rename(columns={'index':'event', 0:'count'})
    df
    
    Out[43]:
                              event  count
    0                         login      1
    1   rt_transaction_confirmation      1
    2                  fb_view_cart     22
    3                    fb_connect      1
    4               rt_view_product     23
    5                     fb_search     29
    6                          sale      1
    7               fb_view_listing     76
    8                   add_to_cart      2
    9                  rt_view_cart     12
    10                fb_homescreen     63
    11              fb_view_product     37
    12            rt_home_start_app     46
    13             fb_view_wishlist     39
    14              create_campaign      1
    15                    rt_search     12
    16                   guest_sale      1
    17             remove_from_cart      1
    18              rt_view_listing     50
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看