Python 使用两个数据帧的条件计数

Python 使用两个数据帧的条件计数,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个由“网格块”(小的地理单元,通常用于人口普查数据)和犯罪构成的数据集。已经录下来了。目前,数据的结构格式为: 数据帧:记录 Meshblock犯罪 1100曳引 1200不缩进代码 1300曳引 1400拖曳 1200不缩进代码 1100曳引 我创建了一个新的DataFrame,它使用单个网格块编制索引,其中的列来自犯罪类别 DataFrame:df Meshblock trolling不缩进代码 1100 1200 1300 1400 以及个别罪行类别的清单: 违规行为[拖拉,而非

我有一个由“网格块”(小的地理单元,通常用于人口普查数据)和犯罪构成的数据集。已经录下来了。目前,数据的结构格式为:

数据帧
记录

Meshblock犯罪
1100曳引
1200不缩进代码
1300曳引
1400拖曳
1200不缩进代码
1100曳引
我创建了一个新的
DataFrame
,它使用单个网格块编制索引,其中的列来自犯罪类别

DataFrame
df

Meshblock trolling不缩进代码
1100
1200
1300
1400
以及个别罪行类别的清单:

违规行为[拖拉,而非缩进代码]
我现在要做的是得到x街区发生n起犯罪的记录

目前我掌握的代码是:

对于犯罪中的off:
对于col,df.iterrows()中的行:
对于col1,records.iterrows()中的第1行:
#如果代码匹配且比赛中存在违规行为,则我们将计数增加1
如果行['Meshblock']==行1['Meshblock']和行1['Crime']==关闭:
#这里的一些东西将在有匹配项的情况下以1迭代计数
最后的
数据帧应如下所示:

DataFrame
df

Meshblock trolling不缩进代码
1100            2
1200                          2
1300            1
1400            1

您应该能够使用透视表更轻松地解决此问题

import pandas as pd
import numpy as np
a = {'Meshblock':[1100,1200,1300,1400,1200,1100],'Crime':['Trolling','Not indenting code','Trolling','Trolling','Not indenting code','Trolling']}
df = pd.DataFrame(a)
df = df.pivot_table(columns='Crime',index='Meshblock',aggfunc=len)
print(df)
输出:

Crime      Not indenting code  Trolling
Meshblock
1100                      NaN       2.0
1200                      2.0       NaN
1300                      NaN       1.0
1400                      NaN       1.0