Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据帧的屏蔽和索引_Python_Pandas_Dataframe - Fatal编程技术网

Python 数据帧的屏蔽和索引

Python 数据帧的屏蔽和索引,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个关于犯罪统计的pandas数据框架,我想在其中屏蔽和计算数据集中犯罪值的总数: min=0 最大值=24 天数=df[::24].count()['Year'] 打印(天) df['daily_crime']=np.NAN 对于范围内的i(天): #打印(df.loc[df.index[24],“每日犯罪”]) 打印(df[min:max][df['Personfarlig_krim']=='Yes']) 最大+=24 最小+=24 上面我放置了一个最小和最大计数器,对于一天中的每个2

我有一个关于犯罪统计的pandas数据框架,我想在其中屏蔽和计算数据集中犯罪值的总数:

min=0
最大值=24
天数=df[::24].count()['Year']
打印(天)
df['daily_crime']=np.NAN
对于范围内的i(天):
#打印(df.loc[df.index[24],“每日犯罪”])
打印(df[min:max][df['Personfarlig_krim']=='Yes'])
最大+=24
最小+=24
上面我放置了一个最小和最大计数器,对于一天中的每个24小时,我想在我的数据框中添加一个额外的列,用于计算过去24小时
Personfarlig\u krim
Yes
计数的数量。这一行每天都应该放在一个单独的列中。我尝试过掩蔽和切片,然后分配一个给定的行,但到目前为止我没有运气

Unnamed: 0  District    Neighbourhood.x Year    Month   Day Hour    Weekday Sun Personfarlig_krim   Date2
0   1   1   MANHATTAN   2015    4   1   0   4   False   No  2015-04-01 00:00:00
1   2   1   MANHATTAN   2015    4   1   1   4   False   No  2015-04-01 01:00:00
2   3   1   MANHATTAN   2015    4   1   2   4   False   No  2015-04-01 02:00:00
3   4   1   MANHATTAN   2015    4   1   3   4   False   No  2015-04-01 03:00:00
4   5   1   MANHATTAN   2015    4   1   4   4   False   No  2015-04-01 04:00:00

上面我尝试了格式化数据。它应该有另一列,其中存储了过去24小时(24行)的犯罪率

您可以使用
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

你能添加样本数据和预期产出吗?嗯,这是个好问题。坦率地说,我不确定我是否对这件事有足够的了解,是否能够提供一个有保留的答案。@JonasGrønbek非常感谢你,亲爱的先生。作为数据科学和深度学习社区的一名受人尊敬的成员,我非常尊重您的意见。
长度不匹配:预期轴有74975个元素,新值有74976个元素
@baileyaldwin Try
lambda d:sum(d.eq(“Yes”)
而不是
lambda d:d.eq(“Yes”).sum()。原因可能是。问题仍然存在:(和
lambda d:np.sum(d.eq(“Yes”))
?您的数据中哪里有
NaN
?哦,它现在工作得很好。不过问题是,对于前24行(24小时),总和应该等于0,因为还没有完整的24小时。