unGrouped
是一个如下所示的数据框:
date borough
969609 01/01/2014 BROOKLYN
967983 01/01/2014 BRONX
967982 01/01/2014 QUEENS
865943 01/01/2014 BROOKLYN
967981 01/01/2014 MANHATTAN
967980 01/01/2014 BROOKLYN
967979 01/01/2014 QUEENS
967984 01/01/2014 BRONX
967978 01/01/2014 QUEENS
967976 01/01/2014 BROOKLYN
967975 01/01/2014 BROOKLYN
我有以下代码:
for row in unGrouped:
if unGrouped['borough'][row]=='BRONX':
bronxCount+=1
print bronxCount
它给了我一个关键错误:date
。
我希望遍历列borough
,只要遇到bronxCount
就递增BRONX
,并将该值存储在名为`bronxCount'的列中的每一行,以最终获得计数每天在布朗克斯犯罪。如果有人能让这个循环工作,我会非常感激。谢谢您的帮助!
答案 0 :(得分:2)
您可以在过滤后总结:
>>> (unGrouped.borough == 'BRONX').sum()
2
要计算每个日期的计数,只需按日期和计算前计算:
>>> unGrouped.groupby(['date', 'borough']).size()
date borough
01/01/2014 BRONX 2
BROOKLYN 5
MANHATTAN 1
QUEENS 3
dtype: int64
或者您只希望BRONX
使用日期索引。
>>> unGrouped.groupby(['borough', 'date']).size().loc['BRONX']
date
01/01/2014 2
dtype: int64
答案 1 :(得分:1)
一般来说,如果你使用for循环,你可能做错了!
你可能想要的是groupby和count?
unGrouped.groupBy('borough').size()
答案 2 :(得分:0)
使用values_counts
:
bronxCount = unGrouped.borough.value_counts()['BRONX']
print(BronxCount)
输出:
2
答案 3 :(得分:0)
使用numpy
v, n = np.unique(df.borough.values, return_counts=True)
d=dict(zip(v, n))
d['BRONX']
Out[218]: 2