Скажем, у меня есть кадр данных, который выглядит следующим образом.
df.head()
ID col1 col2 col3 col4 type
1 146 91 Rp Rp-203 ex
1 146 314 Rp Rp-203 trans
1 603 91 Rp Rp-203 CDS
1 910 81 Rp Rp-203 CDS
1 910 81 Rp Rp-203 ex
1 202 825 Rp Rp-203 CDS
1 202 837 Rp Rp-203 ex
1 200 314 Rp Rp-203 ex
Из приведенного выше фрейма данных я хочу сгенерировать фреймы данных.Фрейм данных основан на условии, если столбец type
равен ex
.Кроме того, новый фрейм данных должен иметь два дополнительных столбца со значениями, разделенными запятыми на основе col1
и col2
.
Я хочу создать два столбца col5
и col6
, используя значения из col1
и col2
для каждого значения в столбцах col4
и type
.То есть, я хочу сгруппировать по столбцу col3
для значений (ex
) в столбце type
.
В конце я стремлюсь иметь фреймы данных как,
ID col1 col2 col3 col4 ex_start ex_end
1 146 314 Rp Rp-203 091,081,837 910,202,200
Я пробовал следующее решение,
df2 = df.loc[df['type']=='ex', ['col3','col1', 'col2',]].groupby(['col3']).agg(
lambda x: ','.join([str(y) for y in x]))
Однако мое решение захватывает первое значение col1
как первое значение ex_start
.Но мне нужно значение col2
в качестве первого значения в столбце ex_start
df2
.И значение col1
в качестве первого значения столбца ex_end
в df2
и так далее.И столбец col1
и col2
в df2
должен принимать значения из df
столбцов col1
и col2
, если столбец type
равен trans
.
Любая помощь / предложения очень ценятся!