Я хочу сгруппировать строки на основе столбцов «Хромосома», «Начало» и «Конец», а затем объединить соответствующие столбцы «Начало1», «Конец1», «main_category» в списки. Затем я хочу сделать то же самое, но с столбцами Chromosome, Start1, End1. По сути, не должно быть дубликатов в столбцах «Chromosome», «Start» и «End» ИЛИ столбцах «Chromosome», «Start1», «End1», «main_category». Вот пример ввода/вывода:
Вот часть моего набора данных:
Код: Выделить всё
Chromosome Start End Start1 End1 main_category
chr1 2584125 2584533 2584094 2584437 Enhancer
chr1 2584125 2584533 2584200 2584401 Promoter
chr1 3069168 3069296 3066400 3074201 Promoter
chr1 3069168 3069296 3069019 3069238 Promoter
chr1 3069168 3069296 3069272 3069608 Enhancer
chr1 3186125 3186474 3186069 3186414 Enhancer
chr1 3244087 3244137 3244018 3244334 Enhancer
chr1 3244555 3244666 3244660 3244666 Promoter
chr1 3244755 3244966 3244660 3244666 Promoter
Код: Выделить всё
Chromosome Start End Start1 End1 main_category
chr1 2584125 2584533 [2584094,2584200] [2584437,2584401] [Enhancer,Promoter]
chr1 3069168 3069296 [3066400,3069019,3069272][3074201,3069238,3069608][Promoter,Promoter,Enhancer]
chr1 3186125 3186474 3186069 3186414 Enhancer
chr1 3244087 3244137 3244018 3244334 Enhancer
chr1 [3244555,3244755] [3244666,3244966] 3244660 3244666 Promoter
Код: Выделить всё
condensed_df = df.groupby(['Chromosome', 'Start', 'End']).agg(
{
'main_category': lambda x: ', '.join(map(str, x)),
'Start1': lambda x: ', '.join(map(str, x)),
'End1': lambda x: ', '.join(map(str, x))
}
Источник: https://stackoverflow.com/questions/781 ... e-criteria