Я пытаюсь присвоить новый column
в pandas df
значениях на основе другого 2.
В приведенной ниже df для каждого отдельного значения в Location
(Home, Away etc)
я хочу присвоить возрастающее значение integer
для первых 3
соответствующих unique
значений в Day
.
import pandas as pd
import numpy as np
d = ({
'Time' : ['7:00:00','8:00:00','9:00:00','11:00:00','12:00:00','1:00:00','2:00:00','3:00:00'],
'Day' : ['Mon','Tues','Wed','Thurs','Fri','Thurs','Fri','Sat'],
'Location' : ['Home','Home','Home','Away','Away','Home','Home','Home'],
})
df = pd.DataFrame(data=d)
#Assign values from Home
mask = df['Location'] == 'Home'
df1 = df[mask].drop_duplicates('Day')
d = dict(zip(df1['Day'], np.arange(len(df1)) // 3 + 1))
df.loc[mask, 'Assign'] = df.loc[mask, 'Day'].map(d)
#Assign values from Away
mask = df['Location'] == 'Away'
df1 = df[mask].drop_duplicates('Day')
d = dict(zip(df1['Day'], np.arange(len(df1)) // 3 + 1))
df.loc[mask, 'Assign'] = df.loc[mask, 'Day'].map(d)
Из:
Time Day Location Assign
0 7:00:00 Mon Home 1.0
1 8:00:00 Tues Home 1.0
2 9:00:00 Wed Home 1.0
3 11:00:00 Thurs Away 1.0
4 12:00:00 Fri Away 1.0
5 1:00:00 Thurs Home 2.0
6 2:00:00 Fri Home 2.0
7 3:00:00 Sat Home 2.0
Предполагаемый результат:
Time Day Location Assign
0 7:00:00 Mon Home 1.0
1 8:00:00 Tues Home 1.0
2 9:00:00 Wed Home 1.0
3 11:00:00 Thurs Away 2.0
4 12:00:00 Fri Away 2.0
5 1:00:00 Thurs Home 3.0
6 2:00:00 Fri Home 3.0
7 3:00:00 Sat Home 3.0