我有一个关于犯罪统计信息的熊猫数据框,我想在其中屏蔽并统计数据集中的犯罪值总数:
min = 0
max = 24
days = df[::24].count()['Year']
print(days)
df['daily_crime'] = np.NAN
for i in range(days):
#print(df.loc[df.index[24], 'daily_crime'])
print(df[min:max][df['Personfarlig_krim'] == 'Yes'])
max += 24
min += 24
在上述放置器中,有一个最小值和最大值计数器,对于一天中的24小时中的每一个,我想在数据框中添加一个额外的列,该列用于对{{1 }}最近24小时内。该行应每天放置在单独的列中。我尝试了遮罩和切片,然后分配了给定的行,但是到目前为止我还没有运气。
Yes
以上,我尝试格式化数据。假设有另一列存储了最近24小时(24行)的犯罪率。
答案 0 :(得分:1)
您可以使用groupby
和transform
:
df["Date2"] = pd.to_datetime(df["Date2"])
df["day_total"] = df.groupby(["Year","Month","Day"])["Personfarlig_krim"].transform(lambda d: sum(d.eq("Yes")))
print (df)
District Neighbourhood.x Year Month Day Hour Weekday Sun Personfarlig_krim Date2 day_total
0 1 MANHATTAN 2015 4 1 0 4 False No 2015-04-01 00:00:00 0
1 1 MANHATTAN 2015 4 1 1 4 False No 2015-04-01 01:00:00 0
2 1 MANHATTAN 2015 4 1 2 4 False No 2015-04-01 02:00:00 0
3 1 MANHATTAN 2015 4 1 3 4 False No 2015-04-01 03:00:00 0
4 1 MANHATTAN 2015 4 1 4 4 False No 2015-04-01 04:00:00 0
对于小于24的结果,将值改回0:
df.loc[(df.groupby(["Year","Month","Day"])["day_total"].transform("count").ne(24)),"day_total"] = 0