将Counter对象转换为Pandas DataFrame [英] Transform a Counter object into a Pandas DataFrame
问题描述
我在列表中使用 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' :','fb_search':29'''''''''''''''' ,'sale':1,'guest_sale':1,'remove_from_cart':1,'rt_transaction_confirmation':1,'login':1})
现在我想将 final
转换成Pandas DataFrame
,但是我在做:
final_df = pd.DataFrame(final)
pre>
但我收到错误。
我猜最终不是一个正确的字典,所以如何我将
final
转换成字典?或者另一种方法是将final
转换为DataFrame
?解决方案您可以使用
from_dict
,并通过paramorient ='index'
,然后调用reset_index
,所以你得到一个2列df:在[40]中:
从集合导入计数器
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' 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' ,'guest_sale':1,'remove_from_cart':1,'rt_transaction_confirmation':1,'login':1})
df = pd.DataFrame.from_dict(d,orient ='index')reset_index
df
出[40]:
索引0
0登录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
您可以将列重命名为更有意义的内容:
在[43]中:
df = df.rename(columns = {'index':'event',0:'count'})
df
输出[43]:
事件计数
0登录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销售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
I used
Counter
on a list to compute this variable:final = Counter(event_container)
print final gives:
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})
Now I want to convert
final
into a PandasDataFrame
, but when I'm doing:final_df = pd.DataFrame(final)
but I got an error.
I guess final is not a proper dictionary, so how can I convert
final
to a dictionary? Or is it an other way to convertfinal
to aDataFrame
?解决方案You can construct using
from_dict
and pass paramorient='index'
, then callreset_index
so you get a 2 column 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
You can rename the columns to something more meaningful:
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
这篇关于将Counter对象转换为Pandas DataFrame的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!