Вы можете сделать это, играя с astype
до go с int
до str
до float
, sum
в обоих столбцах строки подряд (например, объединить обе строки), затем str.split
и разверните строку, и sum
снова для каждой строки после выбора правильных столбцов и измените тип каждого di git как float.
#dummy example
df = pd.DataFrame({'patient_nbr':[123456, 123457, 123458],
'encounter_id':[123456, 123456, 123457]})
#create num
df['num'] = df[['patient_nbr', 'encounter_id']].astype(str).sum(axis=1)\
.astype(str).str.split('', expand=True)\
.loc[:,1:12].astype(float).sum(axis=1)
print (df)
patient_nbr encounter_id num
0 123456 123456 42.0
1 123457 123456 43.0
2 123458 123457 45.0
, а затем используйте этот столбец для создания маски с четным как Ложь и нечетный, как Истина
mask = (df['num']%2).astype(bool)
train = df.loc[~mask, :] #train is the even
test = df.loc[mask, :] #test is the odd
print (test)
patient_nbr encounter_id num
1 123457 123456 43.0
2 123458 123457 45.0