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