Присвойте значения группам из трех панд. - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь assign unique значения из pandas df в группах 3.Для df ниже у меня есть Column значений, которые появляются несколько раз.Я рассчитываю, сколько из этих значений в настоящее время встречается .То есть, если они появляются снова, они считаются на .

Если появляется новое значение, оно увеличивает количество включенных значений.Если значение не появляется снова, это уменьшает количество включенных значений.

Это моя попытка ниже.Я могу получить его в группе в три.Но он не учитывает значения unique.

import pandas as pd
import numpy as np

d = ({             
   'Place' : ['House 1','House 2','House 3','House 4','House 1','House 2','House 3','House 4'],#,'House 1','House 2']#,'House 4','House 5','House 6','House 7'],                                                                        
   'On' : [1,2,3,4,4,3,2,1],                                                               
     })

df = pd.DataFrame(data=d)

df["Ind"] = np.ceil(df["On"]/3)

Output:

     Place  On    P
0  House 1   1  1.0
1  House 2   2  1.0
2  House 3   3  1.0
3  House 4   4  2.0
4  House 1   4  2.0
5  House 2   3  1.0
6  House 3   2  1.0
7  House 4   1  1.0

Предполагаемый результат:

     Place  On    P
0  House 1   1  1.0
1  House 2   2  1.0
2  House 3   3  1.0
3  House 4   4  2.0
4  House 1   4  1.0
5  House 2   3  1.0
6  House 3   2  1.0
7  House 4   1  1.0

Описание:

Разница в Index 4.Houses 1 следует присвоить 1, поскольку они изначально были назначены для этого integer.

Описание для On Столбец:

Index 0: House 1 is inserted and it appears again = 1 
Index 1: House 2 is inserted and it appears again = 2 
Index 2: House 3 is inserted and it appears again = 3 
Index 3: House 4 is inserted and it appears again = 4 
Index 4: House 1 doesn't appear again so it will decrease number of values on on the next row = 4 
Index 5: House 2 doesn't appear again so it will decrease number of values on  = 3 
Index 6: House 3 doesn't appear again so it will decrease number of values on  = 2 
Index 7: House 4 doesn't appear again so it will decrease number of values on  = 1 
...