Условный подсчет, используя два кадра данных - PullRequest
0 голосов
/ 08 октября 2019

У меня есть набор данных, который состоит из «ячеистых блоков» (небольших географических единиц, обычно используемых для данных переписи) и преступлений. Это записано. В настоящее время данные структурированы в формате:

DataFrame: records

Meshblock   Crime
1100        Trolling
1200        Not indenting code
1300        Trolling
1400        Trolling
1200        Not indenting code
1100        Trolling

Я создал новый DataFrame, проиндексированный с использованием отдельных мешблоков, с полученными столбцамииз категорий преступлений.

DataFrame: df

Meshblock   trolling   not indenting code
1100
1200
1300
1400

и список отдельных категорий преступлений:

offences[trolling, not indenting code]

Что я пытаюсьсделать сейчас - это подсчитать число совершенных n преступлений в сетке x.

Текущий код, который у меня есть на данный момент:

for off in offences:
    for col, row in df.iterrows():

        for col1, row1 in records.iterrows():

        #if the codes match and the offence is present for the match then we increment the count by 1
            if row['Meshblock'] == row1['Meshblock'] and row1['Crime'] == off:
              #something here that will iterate the count by 1 where there is a match

Финальный DataFrame должен выглядеть следующим образом:

DataFrame: df

Meshblock   trolling   not indenting code
1100            2
1200                          2
1300            1
1400            1

1 Ответ

1 голос
/ 08 октября 2019

Вы должны быть в состоянии решить это проще с pivot_table:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...