Это продолжение следующего вопроса .
Это мой фрейм данных:
nan = ""
d = {'NAME': ['a','a','b','b','c','c','c','c','c','d','d','d','d','d','d'],
'col1': ['P100','P100','P100','P100','MS','MS','MS','MS','MS','MS','MS','MS','MS','MS','MS'],
'col2': ['CNMZ',
'CNMZ',
'COMX',
'COMX',
'_NCTE',
'_NCTE',
'_NCTE',
'_NCTE',
'_NCTE',
'T1MF',
'T1MF',
'T1MF',
'T1MF',
'T1MF',
'T1MF'],
'stepNo': [1, 2, 1, 2, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6],
'col4': ['xyz',
'abc',
'pqr',
'gvt',
'mno',
'tru',
'ercm',
'lotr',
'ddlj',
'refv',
'ecv',
'ecv',
'ecv',
'ecv',
'ecv'],
'col5': ['PHL',
'PHL',
'BHL',
'ALT',
'MRS',
'MRS',
'TUL',
'MRS',
'FAT',
'PHL',
'PHL',
'JEN',
'FTW',
'AMB',
'KGP'],
'col6': ['CP',
'CO',
'CP',
'CO',
'CP',
'CO',
'CO',
'CO',
'RT',
'CO',
'CO',
'CO',
'CP',
'CO',
'CO'],
'col7': ['PHL',
'PHL',
'ALT',
'ALT',
'MRS',
'TUL',
'MRS',
'FAT',
'FAH',
'PHL',
'JEN',
'FTW',
'AMB',
'KGP',
'KGP'],
'col8': ['CO',
'CO',
'CO',
'CO',
'CO',
'CO',
'CO',
'RT',
'CP',
'CO',
'CO',
'CP',
'CO',
'CO',
'CO'],
'col9': ['SID',
'M/M',
'SID',
'U/D',
'AL LO',
'AL LO',
'AL LO',
'AL LO',
'AL LO',
'M/M',
'DCS',
'DCS',
'DCS',
'DCS',
'DCS'],
'col10': ['SID',
'M/M',
'SID',
'U/D',
'AL LO',
'3 M',
'3 M',
'M/M',
'AL LO',
'M/M',
'DCS',
'DCS',
'DCS',
'DCS',
'DCS'],
'col11': [nan,
'ATM',
nan,
'PACK',
'AL LP',
'DCS',
'DCS',
'DAM',
'DAM',
'DCS',
'DCS',
'DCS',
'DCS',
'DCS',
'M/M'],
'col12': [nan,
'SID',
nan,
'PACK',
'CAL LO',
'DCS',
'DCS',
'M/M',
'CAL LO',
'DCS',
'DCS',
'DCS',
'DCS',
'DCS',
'AL LO'],
'col13': ['abc',
'-02-1_',
'-1',
'-13_',
nan,
nan,
nan,
'T1_VT1.',
nan,
'-06',
nan,
nan,
nan,
nan,
'-03_02-03'],
'col14': [nan,
nan,
nan,
nan,
'102/',
'102/',
'102/',
nan,
'101/',
nan,
'3405',
'3102/',
'3111/',
'3102/',
nan]}
df = pd.DataFrame(d)
Я хочу напечатать строку с таким же значением в NAME
в одной строке со всеми столбцами с использованием stepNo
. Например,
Вывод:
NAME col1 col2 stepNo col4...........col14 NAME col1 col2 stepNo col4...........col14 NAME col1 col2 stepNo col4...........col14 NAME col1 col2 stepNo col4...........col14
a P100 CNMZ 1 xyz nan a P100 CNMZ 2 abc nan
b P100 COMX 1 pqr nan b P100 COMX 2 gvt nan
c MS _NCTE 1 mno 102/ c MS _NCTE 2 tru 102/ c MS _NCTE 3 ercm 102/ c MS _NCTE 4 lotr nan
Так как NAME=3
имеет 5 строк, на выходе будет еще 1 набор столбцов.
Для NAME=4
будет 6 наборы столбцов в выводе.
Я надеюсь, что вывод примера достаточно информативен. Если нет, вы можете сослаться на связанный вопрос в начале для лучшего понимания.
Это было предложенное решение, но оно не работает для приведенного выше примера:
dfs = []
for i in range(min(df['stepNo']), max(df['stepNo'])+1):
dfs.append(df[df['stepNo']==i].reset_index())
dfx = pd.concat(dfs, axis=1)
dfx.drop(inplace=True, columns=['index'])
Возможно ли получить ожидаемое вывод?