我有一个由函数产生的集合结果:
Counter(df.email_address)
它返回每个单独的电子邮件地址及其重复次数。
Counter({nan: 1618, 'store@kiddicare.com': 265, 'testorders@worldstores.co.uk': 1})
我想要做的就是使用它,好像它是一个字典并用它创建一个pandas数据帧,其中两列用于电子邮件地址,另一列用于相关值。
我尝试过:
dfr = repeaters.from_dict(repeaters, orient='index')
但我收到以下错误:
AttributeError: 'Counter' object has no attribute 'from_dict'
看起来像Counter不是字典的东西。关于如何将它附加到df的任何想法?
答案 0 :(得分:10)
d = dict(Counter(df.email_address))
修改强>
或者@Trif Nefzger如何建议:
<li id="liHeader"><a href="#tabHeader" title="Header">General</a></li>
<li id="liFooter"><a href="#tabNotesComments" id="tabNotes" title="Notes/History of Job">Notes (<%= NoOfNotes %>)</a></li>
<li runat="server" id="liDelivery" ><a href="#<%= tabDeliveryDbrief.ClientID %>" title="Delivery Dbrief">Delivery Dbrief</a></li>
答案 1 :(得分:1)
正如ajcr在评论中写道的那样,from_dict
是一种属于数据框架的方法,因此您可以编写以下内容来实现您的目标:
from collections import Counter
import pandas as pd
repeaters = Counter({"nan": 1618, 'store@kiddicare.com': 265, 'testorders@worldstores.co.uk': 1})
dfr = pd.DataFrame.from_dict(repeaters, orient='index')
print dfr
<强>输出:强>
testorders@worldstores.co.uk 1
nan 1618
store@kiddicare.com 265
答案 2 :(得分:0)
或者,您可以使用pd.Series.value_counts
,它会返回Series
个对象。
df.email_address.value_counts(dropna=False)
示例输出:
b@y.com 2
a@x.com 1
NaN 1
dtype: int64
这不完全是你所要求的,但看起来就像你想要达到的目标。