Как я понял, для каждой исходной строки вы хотите сгенерировать 2 строки:
employeeId
(переименовано в idvalue
), затем IDTypeCode
= '001', затем 'stayig'столбцы (но не все) и, наконец, CodeName
=' 1 '. cumbId
, затем IDTypeCode
=' 002 ', те же самые столбцы' elseig 'и CodeName
(также ='1 ').
Таким образом, приведенная ниже программа генерирует 2 таких кадра данных (df1
и df2
), а затем генерирует результат, «чередуя» их строки.
import pandas as pd
data = [
[ 'E123456', '102939485', 'Andrew', 'Hoover', 'hoovera@xyz.com', '001', '002', 'AE', 'AWB', 'EMPLR' ],
[ 'E123457', '675849302', 'Curt', 'Austin', 'austinc1@xyz.com', '001', '002', 'AE', 'AWB', 'EMPLR' ],
[ 'E123458', '354852739', 'Celeste', 'Riddick', 'riddickc@xyz.com', '001', '002', 'AE', 'AWB', 'EMPLR' ],
[ 'E123459', '937463528', 'Hazel', 'Tooley', 'tooleyh@xyz.com', '001', '002', 'AE', 'AWB', 'EMPLR' ]
]
df = pd.DataFrame(data=data, columns=['employeeId', 'cumbId', 'firstName', 'lastName',
'emailAddress', 'employeeIdTypeCode', 'cumbIDTypeCode', 'entityCode', 'sourceCode',
'roleCode' ])
# 'Remainig' columns
cols = ['firstName', 'lastName', 'emailAddress', 'entityCode', 'sourceCode', 'roleCode']
# df1: employeeId, IDTypeCode = '001' and 'remainig' columns
df1 = df[['employeeId']].set_axis(['idvalue'], axis=1, inplace=False)
df1['IDTypeCode'] = '001'
df1 = df1.join(df[cols])
df1['CodeName'] = '1'
# df2: cumbId, IDTypeCode = '002' and 'remainig' columns
df2 = df[['cumbId']].set_axis(['idvalue'], axis=1, inplace=False)
df2['IDTypeCode'] = '002'
df2 = df2.join(df[cols])
df2['CodeName'] = '1'
# Result
result = pd.concat([df1,df2]).sort_index().reset_index(drop=True)